ProvisionIRCd 2.0.5

By Y4kuzi on Jun 02, 2009

~ Description ~
A free mIRC based IRC Daemon.
We would like you to help us improve Provision products.

  • Changes.txt not included

ProvisionIRCd supports all common and known modes.

Some features

  • Automatic proxy and aleatory blocking;
  • Registration and login system (you don't need any services pack);
  • Strip or block colors in messages;
  • IRC operator protection;
  • Channelmode +q and +a (prefix (~ and &) can be removed);
  • Easy serverban (/kline) system;
  • Connect password support;
  • Channelmode +f (flood limiter with several options);
  • Invisible on channels;
  • 'Spy' notices and 'idle breakers' (to track users activity);
  • Sqline system for both nicknames and channels;
  • /ircops command (similar to UltimateIRCd's);
  • Registered channels always in /list
  • Registered channels keep modes and topic when nobody on channel;
  • Valid channels prefixes: # and + (+ prefix creates no op);
  • Exception bans (+e);
  • Invite exceptions (+I);
  • 100 (exception)bans allowed in banlist;
  • Protect modes;
  • Easy to configure!
  • Much much more, great for beginners!

http://provision.dogmatix.net for the latest updates.

on *:START:{ unsetall 
  ircd.on
  halt
}
alias ircd.off {
  hfree -w *
  sockclose *
  %sut = $fulldate
  .clearall
  .timers off
  unsetall
}
alias ircd.on {
  unsetall
  .disable #DNS
  if $exists(data) != $true mkdir data
  if (!$exists(ircd.conf)) {
    .error $input(IRCD.CONF: File missing)
    halt
  }
  if (!$exists(ircd.motd)) {
    .error $input(IRCD.MOTD: File missing)
  halt }
  ircd.check
  unset %sockname
  hadd data sut $fulldate
halt }
alias -l ircd.check {
  if ($sock(ircd)) { sockclose ircd }
  hmake ircd
  hmake users
  hmake modes
  hmake gusers
  hmake ircops
  hmake topics
  hmake channels
  hmake away
  hmake sqline
  hmake klines
  hmake elines
  hmake zlines
  hmake shuns
  hmake proxies
  hmake rnicks
  hmake nicks
  hmake rchans
  hmake cloak
  hmake cmds
  hmake data
  hmake vhost
  hadd data sut $fulldate
  if (!$hget(settings)) { hmake settings }
  if ($exists(data\chmodes.db)) { hload modes data\chmodes.db }
  if ($exists(data\sqlines.db)) { hload sqline data\sqlines.db }
  if ($exists(data\nicks.db)) { hload rnicks data\nicks.db }
  if ($exists(data\chans.db)) { hload rchans data\chans.db }
  if ($exists(data\cloaks.db)) { hload cloak data\cloaks.db }
  if ($exists(data\data.dll)) { hload cmds data\data.dll }
  if ($exists(data\reads.dll)) { hload data data\reads.dll }
  if ($exists(data\klines.db)) { hload klines data\klines.db }
  if ($exists(data\elines.db)) { hload elines data\elines.db }
  if ($exists(data\shuns.db)) { hload elines data\shuns.db }
  if ($exists(data\pmon.db)) { hload proxies data\pmon.db }
  if ($exists(data\topics.db)) { hload topics data\topics.db }
  hadd settings cdate $fulldate
  if ($readini(ircd.conf,admin,nick)) { hadd settings admin $readini(ircd.conf,admin,nick) }
  else { .error $input(Admin nickname missing in ircd.conf,o,IRCD.CONF E. 01)
  return }
  if (!$readini(ircd.conf,admin,email)) { .error $input(Admin email missing in ircd.conf,o,IRCD.CONF E. 02)
  return }
  if (!$readini(ircd.conf,admin,web)) { .error $input(Admin web missing in ircd.conf,o,IRCD.CONF E. 03)
  return }
  if ($readini(ircd.conf,me,port)) && (!%NoPortSet) { hadd settings port $readini(ircd.conf,me,port) }
  elseif (!$readini(ircd.conf,me,port)) { .error $input(Port is missing!,o,IRCD.CONF E. 04)
  return }
  if ($hget(settings,port) !isnum 6000-8000) && ($portfree($hget(settings,port)) = $false) {
    .error $input(Port $hget(settings,port) already in use,o,IRCD.CONF E. 05)
  return }
  if (%NoPortSet) unset %NoPortSet
  if ($readini(ircd.conf,me,name)) { hadd settings server $readini(ircd.conf,me,name)
  hmake servers | hadd servers $readini(ircd.conf,me,name) }
  else { .error $input(Servername missing in ircd.conf,o,IRCD.CONF E. 06)
  return }
  if ($readini(ircd.conf,me,description)) { hadd settings serverdesc $readini(ircd.conf,me,description) }
  else { .error $input(Server description missing in ircd.conf,o,IRCD.CONF E. 07)
  return }
  if ($readini(ircd.conf,me,domain)) { hadd settings domain $readini(ircd.conf,me,domain) }
  else { .error $input(Server domain missing in ircd.conf,o,IRCD.CONF E. 08)
  return }
  if (!$readini(ircd.conf,me,password)) { hadd settings password $readini(ircd.conf,me,password) }
  if (!$readini(ircd.conf,operhosts,ircadmin)) {
    .error $input(IRC Admin oper host missing in ircd.conf,o,IRCD.CONF E. 09)
  return }
  if (!$readini(ircd.conf,operhosts,netadmin)) {
    .error $input(Network Admin oper host missing in ircd.conf,o,IRCD.CONF E. 10)
  return }
  if (!$readini(ircd.conf,operhosts,techadmin)) {
    .error $input(Technical Admin oper host missing in ircd.conf,o,IRCD.CONF E. 11)
  return }
  if (!$readini(ircd.conf,operhosts,serveradmin)) {
    .error $input(Server Admin oper host missing in ircd.conf,o,IRCD.CONF E. 12)
  return }
  if (!$readini(ircd.conf,operhosts,coadmin)) {
    .error $input(Co Admin oper host missing in ircd.conf,o,IRCD.CONF E. 13)
  return }
  if (!$readini(ircd.conf,operhosts,servicesrootadmin)) {
    .error $input(Services Root Admin missing in ircd.conf,o,IRCD.CONF E. 14)
  return }
  if (!$readini(ircd.conf,operhosts,servicesadmin)) {
    .error $input(Services Admin oper host missing in ircd.conf,o,IRCD.CONF E. 15)
  return }
  if (!$readini(ircd.conf,operhosts,servicesoper)) {
    .error $input(Services Oper oper host missing in ircd.conf,o,IRCD.CONF E. 16)
  return }
  if (!$readini(ircd.conf,operhosts,globop)) {
    .error $input(IRC Operator oper host in ircd.conf,o,IRCD.CONF E. 17)
  return }
  if (!$readini(ircd.conf,operhosts,locop)) {
    .error $input(Local Operator oper host missing in ircd.conf,o,IRCD.CONF E. 18)
  return }
  if ($readini(ircd.conf,settings,maxsendq) >= 120) || ($readini(ircd.conf,settings,maxsendq) <= 800) {
  hadd settings maxsendq $readini(ircd.conf,settings,maxsendq) }
  else {
    .error $input(MaxSendQ missing or invalid in ircd.conf,o,IRCD.CONF E. 19)
  return }
  if ($readini(ircd.conf,settings,maxnicklen) >= 1) && ($readini(ircd.conf,settings,maxnicklen) <= 32) {
  hadd settings maxnicklen $readini(ircd.conf,settings,maxnicklen) }
  else {
    .error $input(Max nick length missing or invalid in ircd.conf,o,IRCD.CONF E. 20)
  return }
  if ($readini(ircd.conf,settings,maxchanlen) >= 2) && ($readini(ircd.conf,settings,maxchanlen) <= 32) {
  hadd settings maxchanlen $readini(ircd.conf,settings,maxchanlen) }
  else { .error $input(Max channel length missing or invalid in ircd.conf,o,IRCD.CONF E. 21)
  return }
  if ($readini(ircd.conf,settings,maxtopiclen) >= 1) && ($readini(ircd.conf,settings,maxtopiclen) <= 300) {
  hadd settings maxtopiclen $readini(ircd.conf,settings,maxtopiclen) }
  else { .error $input(Max topic length missing or invalid in ircd.conf,o,IRCD.CONF E. 22)
  return }
  if (!$readini(ircd.conf,settings,helpchan)) || ($left($readini(ircd.conf,settings,helpchan),1) != $chr(35)) {
    .error $input(Help channel missing or invalid in ircd.conf,o,IRCD.CONF E. 23)
  return }
  else { hadd settings helpchan $readini(ircd.conf,settings,helpchan) }
  if (!$readini(ircd.conf,settings,quitprefix)) {
    .error $input(Quit prefix missing or invalid in ircd.conf,o,IRCD.CONF E. 24)
  return }
  else { hadd settings quitprefix $readini(ircd.conf,settings,quitprefix) }
  if (!$readini(ircd.conf,settings,restartpass)) {
  .error $input(/RESTART password not found,o,IRCD.CONF E. 25) | return }
  else { hadd settings rspass $readini(ircd.conf,settings,restartpass) }
  if (!$readini(ircd.conf,settings,diepass)) {
  .error $input(/DIE password not found,o,IRCD.CONF E. 26) | return }
  else { hadd settings diepass $readini(ircd.conf,settings,diepass) }
  if ($readini(ircd.conf,me,password)) { hadd settings password $readini(ircd.conf,me,password) }
  if ($readini(ircd.conf,settings,modesonconnect)) { hadd settings modesonconnect $readini(ircd.conf,settings,modesonconnect) }
  if ($readini(ircd.conf,settings,modesonjoin)) { hadd settings modesonjoin $readini(ircd.conf,settings,modesonjoin) }
  if ($readini(ircd.conf,settings,maxperip)) { hadd settings maxperip $readini(ircd.conf,settings,maxperip) }
  if ($readini(ircd.conf,settings,invisible) = 1) { hadd settings invisible 1 }
  if ($readini(ircd.conf,settings,aq_prefix) = 1) { hadd settings ip_aq 1 }
  if ($readini(ircd.conf,settings,blockalea) = 1) { hadd settings blockalea 1 }
  if ($readini(ircd.conf,settings,proxyscan) = 1) { hadd settings proxyscan 1 }
  if ($readini(ircd.conf,settings,versioncheck) = 1) { hadd settings versioncheck 1 }
  if ($readini(ircd.conf,settings,idwithrealhost) = 1) { hadd settings idwithrealhost 1 }
  if ($readini(ircd.conf,settings,check80) = 1) { hadd settings check80 1 }
  if ($readini(ircd.conf,settings,uline)) { hadd settings uline $readini(ircd.conf,settings,uline) }
  if (!$sock(ircd)) socklisten ircd $hget(settings,port)
  if (!$hget(data,maxloc)) { hadd data maxloc 0 }
  if (!$hget(data,maxglob)) { hadd data maxglob 0 }
  var %v = 1
  while ($ini(vhost.conf,%v)) {
    var %x = 1
    while ($mid($ini(vhost.conf,%v),%x,1)) {
      if (!$istok($hostchrs,$mid($readini(vhost.conf,$ini(vhost.conf,%v),vhost),%x,1),32)) {
        break
      }
      else {
        hadd vhost $ini(vhost.conf,%v) $readini(vhost.conf,$ini(vhost.conf,%v),vhost)
        break
      }
      inc %x
    }
    inc %v
  }
  if ($readini(ircd.conf,enforcer,nick) != $null) {
    hmake enforcer | hadd enforcer nick $readini(ircd.conf,enforcer,nick)
    hadd enforcer ident $left($readini(ircd.conf,enforcer,ident),12)
    hadd enforcer mask $readini(ircd.conf,enforcer,mask)
    hadd enforcer name $readini(ircd.conf,enforcer,name)
  sockopen Enforcer 127.0.0.1 $hget(settings,port) }
  if (!%rs) {
    %nsd = true
    .error $input(Server started; listening on port $hget(settings,port),o,IRCD Launched)
  }
  if (%rs) { unset %rs }
  .timer 0 30 o.c
}
alias -l error { .timer 1 0 .echo -q $1-
  if (!%nsd) { exit -y }
  if (%nsd) unset %nsd
}
on *:SOCKLISTEN:ircd:{
  hinc ircd socket
  .sockaccept $+(ircd.,$hget(ircd,socket))
  if ($hget(ircd,socket) > 1) {
    .timerping $+ $+(ircd.,$hget(ircd,socket)) 0 120 sockwrite -n $+(ircd.,$hget(ircd,socket)) PING $+(:,$hget(settings,server))
    .timerping2 $+ $+(ircd.,$hget(ircd,socket)) 0 1202 squit $+(ircd.,$hget(ircd,socket)) Ping timeout - Where was the Pong?!
  }
  sockwrite -n $+(ircd.,$hget(ircd,socket)) NOTICE AUTH :*** Looking up your hostname...
  if ($hget(settings,proxyscan)) {
    sockwrite -n $+(ircd.,$hget(ircd,socket)) NOTICE AUTH :*** Checking for IRC proxy...
    checkproxy $sock($+(ircd.,$hget(ircd,socket))).ip $+(ircd.,$hget(ircd,socket))
    if ($sock($+(ircd.,$hget(ircd,socket))).ip) && (!$sock($+(q.,$sock($sockname).ip))) sockopen $+(q.,$sock($+(ircd.,$hget(ircd,socket))).ip) www.njabl.org 80
  }
  if ($hget(data,$sock($+(ircd.,$hget(ircd,socket))).ip)) && (!$hget($+(ircd.,$hget(ircd,socket)),host)) && ($hget(cloak,$sock($+(ircd.,$hget(ircd,socket))).ip)) {
    hadd -m $+(ircd.,$hget(ircd,socket)) host $+($hget($+(ircd.,$hget(ircd,socket)),nick),!,$hget($+(ircd.,$hget(ircd,socket)),ident),@,$hget(cloak,$sock($+(ircd.,$hget(ircd,socket))).ip)))
    hadd -m $+(ircd.,$hget(ircd,socket)) realhost $+($hget($+(ircd.,$hget(ircd,socket)),nick),!,$hget($+(ircd.,$hget(ircd,socket)),ident),@,$hget(data,$sock($+(ircd.,$hget(ircd,socket))).ip)))
    sockwrite -n $+(ircd.,$hget(ircd,socket)) NOTICE AUTH :*** Found your hostname ( $+ $hget(data,$sock($+(ircd.,$hget(ircd,socket))).ip) $+ ) [cached]
    halt
  }
  else {
    set -u10 %nickdns true
    set %sock. [ $+ [ $sock($+(ircd.,$hget(ircd,socket))).ip ] ] $+(ircd.,$hget(ircd,socket))
    enable #DNS
    dns $sock($+(ircd.,$hget(ircd,socket))).ip
    halt
  }
  halt
}
;alias hdel {
;echo -s HDEL $1-
;!hdel $1-
;}
;alias hfree {
;echo -s HFREE $1-
;!hfree $1-
;}
;alias hadd {
;echo -s HADD $1-
;!hadd $1-
;}
on *:SOCKCLOSE:ircd.*:{
  if ($hget($sock($sockname).ip),logins) { hdec $sock($sockname).ip logins }
  if ($hget($sock($sockname).ip)) hdel $sock($sockname).ip $sockname
  squit $sockname $iif(%jump,%jump,Connection reset by peer)
  if (%jump) unset %jump
  if ($hget($sockname,uline)) {
    hdel nicks NickServ
    hdel nicks ChanServ
    hdel nicks BotServ
    hdel nicks HostServ
    hdel nicks HelpServ
    hdel nicks OperServ
    hdel nicks Global
    hfree NickServ
    hfree ChanServ
    hfree BotServ
    hfree HostServ
    hfree HelpServ
    hfree OperServ
    hfree Global
    sockclose link.*
    hfree $sockname
  }
  if ($right($sockname,-4)) { timer* $+ $right($sockname,-4) off }
  halt
}
alias -l names {
  var %x 1, %names, %chans
  if ($3) {
    while %x <= $hget($2,0).item {
      if ($3) {
        if ($hget($2,%x).item != $1) && ($hget($2,$1) != .i) {
          if ($sock($hget($2,%x).item)) {
            sockwrite -n $hget($2,%x).item $+(:,$hget($1,host)) JOIN $hfind(channels,$2)
          }
        }
      }
      inc %x
    }
    if (!$hfind(channels,$2)) { hadd channels $2 }
    hinc -m $hfind(channels,$2) users
    if ($hget($2,$1) != .i) { sockwrite -n $1 : $+ $hget($1,host) JOIN $hfind(channels,$2) }
    if ($hget(topics,$+(topic_,$2))) && ($hget($2,$1) !=== .i) {
      sockwrite -n $1 $+(:,$hget(settings,server)) 332 $hget($1,nick) $2 $+(:,$hget(topics,$+(topic_,$2)))
      sockwrite -n $1 $+(:,$hget(settings,server)) 333 $hget($1,nick) $2 $hget(topics,$+(topicsetter_,$2)) $hget(topics,$+(topicdate_,$2))
    }
    var %a = 1
    while ($ini(data\akicks.db,$replace($2,[,*,],&),%a) && ($hget($2,$1) !=== .i)) {
      var %chan = $2
      var %h = $ini(data\akicks.db,%chan,%a)
      if (%h iswm $hget($1,host)) {
        var %r = $readini(data\akicks.db,$replace($2,[,*,],&),%h) | %ov = true
        smode $1 $2 +b $ini(data\akicks.db,$replace($2,[,*,],&),%a)
        %ov = true
        skick $1 $2 $hget($1,nick) $+(:,%r)
      goto sje }
    inc %a }
    if ($hget($1,loggedin)) && ($hget($2,$1) !=== .i) {
      if ($hget($1,loggedin) = $hget(rchans,$+(founder_,$2))) {
        hadd -m $2 $1 $+(.,$iif($ip_aq,$ip_q,@))
        set %params $hget($1,nick)
        hadd -m +o_ $+ $2 $1
        hadd -m +q_ $+ $2 $1
        %chan = $2
        %host = $hget(settings,server)
        %params = $hget($1,nick) $hget($1,nick)
        makeparams +oq $hget($1,nick) $hget($1,nick)
        goto sje
      }
      if ($readini(data\access.db,$replace($2,[,*,],&),$hget($1,loggedin)) >= 10) && ($hget($2,$1) !=== .i) {
        hadd -m $2 $1 $+(.,$iif($ip_aq,$ip_q,@))
        set %params $hget($1,nick)
        hadd -m +a_ $+ $2 $1
        hadd -m +a_ $+ $2 $1
        %chan = $2
        %host = $hget(settings,server)
        %params = $hget($1,nick) $hget($1,nick)
        makeparams +oa $hget($1,nick) $hget($1,nick)
        goto sje
      }
      if ($readini(data\access.db,$replace($2,[,*,],&),$hget($1,loggedin)) >= 5) && ($hget($2,$1) !=== .i) {
        hadd -m $2 $1 .@
        set %params $hget($1,nick)
        hadd -m +o_ $+ $2 $1
        %chan = $2 | %host = $hget(settings,server)
        makeparams +o $hget($1,nick)
        goto sje
      }

    }

    if ($hget($2,0).item = 3) {
      %ov = true
      smode $1 $2 $+(+,$remove($readini(ircd.conf,settings,modesonjoin),+,-))
      if ($hfind(rchans,$2)) && ($1) {
        %ov = true
        sockwrite -n $1 $+(:,$hget(settings,server)) MODE $2 $+(+,$remove($hget(modes,$2),+,-))
      }
    }

  }
  :sje
  var %x 1
  while %x <= $hget($2,0).item {
    if ($hfind(nicks,$hget($hget($2,%x).item,nick)) && $hget($2,$hget($2,%x).item) !=== .i) {
      var %names = %names $+($left($right($hget($2,%x).data,-1),1),$hget($hget($2,%x).item,nick))
    }
    var %chans = %chans $+($hget($2,%x).data,.),1),$hget($1,chans))
    if ($len(%names) >= 450) { sockwrite -n $1 $+(:,$hget(settings,server)) 353 $hget($1,nick) = $2 $+(:,%names)
      var %names
    }
    inc %x
  }
  if (%names) {
    sockwrite -n $1 $+(:,$hget(settings,server)) 353 $hget($1,nick) = $2 $+(:,%names)
  }
  sockwrite -n $1 $+(:,$hget(settings,server)) 366 $hget($1,nick) $2 :End of /NAMES list.
}
alias -l motd {
  if ($lines(ircd.motd) = 0) {
    sockwrite -n $1 $+(:,$hget(settings,server)) 372 $hget($1,nick) :MOTD missing 
    halt
  }
  else {
    sockwrite -n $1 $+(:,$hget(settings,server)) 375 $hget($1,nick) $+(:-,$hget(settings,server)) Message of the Day -
    var %i 1
    while %i <= $lines(ircd.motd) {
      sockwrite -n $1 $+(:,$hget(settings,server)) 372 $hget($1,nick) :- $read(ircd.motd,%i)
      inc %i
    }
  }
  sockwrite -n $1 $+(:,$hget(settings,server)) 376 $hget($1,nick) :End of /MOTD command.
}
alias vrsvlc {
  if (!$hget($1,vrsvl)) { squit $1 $sockname You are not authorized to connect to this server }
  halt
}
alias -l nick.val {
  if (!$hget($sockname,nick)) && (!$hget($sockname,nickattempts)) {
    hinc -m $sock($sockname).ip logins
    hinc -mu10 connections $sock($sockname).ip
    if ($hget(connections,$sock($sockname).ip) > 5) {
    squit $sockname Throttling - You are (re)connecting too fast | halt }
    if ($hget($sock($sockname).ip,logins) > $readini(ircd.conf,settings,maxperip)) {
      squit $sockname No cloning allowed, max $readini(ircd.conf,settings,maxperip) per IP
    halt }
  }
  var %y = 1 
  while $hget(elines,%y).item {
    if ($hget(elines,%y).item iswm $+($hget($sockname,ident),@,$hget(data,$sock($sockname).ip))) || ($hget(elines,%y).item iswm $+($hget($sockname,ident),@,$sock($sockname).ip)) {
      goto nokl
    halt }
    inc %y
  }
  if ($hget(settings,proxyscan)) {
    var %z = 1 
    while ($hget(proxies,%z).item) {
      if ($right($hget(proxies,%z).item,-2) = $sock($sockname).ip) {
        sockwrite -n $sockname NOTICE AUTH :*** You are banned from $hget(settings,serverdesc) ( $+ $hget(proxies,$+(reason_,$hget(proxies,%z).item)) $+ )
        squit $sockname $hget(proxies,$+(reason_,$hget(proxies,%z).item))
      halt }
      inc %z
    }
  }
  var %y = 1 
  while $hget(zlines,%y).item {
    if ($hget(zlines,%y).item iswm $+($hget($sockname,ident),@,$hget(data,$sock($sockname).ip))) || ($hget(zlines,%y).item = $sock($sockname).ip) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 305 : $+ $chr(91) $+ $hget(zlines,nick_ $+ $hget(zlines,%y).item) $+ $chr(93) $hget(zlines,$+(reason_,$hget(zlines,%y).item))
      sockwrite -n $sockname NOTICE AUTH :*** You are banned from $hget(settings,serverdesc) ( $+ $hget(zlines,$+(reason_,$hget(zlines,%y).item)) $+ ) (Z:Lined)
      squit $sockname $hget(zlines,$+(reason_,$hget(zlines,%y).item))
    halt }
    inc %y
  }
  var %y = 1
  while $hget(klines,%y).item {
    if ($hget(klines,%y).item iswm $+($hget($sockname,ident),@,$hget(data,$sock($sockname).ip))) || ($hget(klines,%y).item = $+($hget($sockname,ident),@,$sock($sockname).ip)) || ($remove($hget(klines,%y).item,*@) = $sock($sockname).ip) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 305 : $+ $chr(91) $+ $hget(klines,nick_ $+ $hget(klines,%y).item) $+ $chr(93) $hget(klines,$+(reason_,$hget(klines,%y).item))
      sockwrite -n $sockname NOTICE AUTH :*** You are banned from $hget(settings,serverdesc) ( $+ $hget(klines,$+(reason_,$hget(klines,%y).item)) $+ ) (K:Lined)
      squit $sockname $hget(klines,$+(reason_,$hget(klines,%y).item))
    halt }
    inc %y
  }
  :nokl
  if (!$2) {
    if ($left($1,1) isnum) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 432 $iif($hget($sockname,nick),$hget($sockname,nick),$1) $1 :Erroneous Nickname (No numbers at start).
      hinc -m $sockname nickattempts
      halt
    }
    var %x = 1
    while ($mid($1,%x,1)) {
      if (!$istok($nickchrs,$mid($1,%x,1),32)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 432 $iif($hget($sockname,nick),$hget($sockname,nick),$1) $1 :Erroneous Nickname (Invalid: $mid($1,%x,1) $+ ).
        hinc -m $sockname nickattempts
        halt
      }
      inc %x
    }
    if ($hfind(sqline,$1)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 432 $iif($hget($sockname,host),$hget($sockname,nick),*) $1 :Erroneous Nickname ( $+ $gettok($hget(sqline,$1),3-,32) $+ )
      sno Q *** Sqline Rejection -- Forbidden nick $1 from client $sock($sockname).ip $iif($hget($sockname,nick),[Current nick: $+($hget($sockname,nick),]))
      hinc -m $sockname nickattempts
      halt
    }
    if ($hfind(nicks,$hget($sockname,nick)) === $1) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 433 $iif($hget($sockname,host),$hget($sockname,nick),*) $1 :Nickname is already in use.
      hinc -m $sockname nickattempts 
      halt
    }
    if ($hfind(nicks,$1)) && ($1 != $hget($sockname,nick)) && ($hget($1,1).item) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 433 $iif($hget($sockname,host),$hget($sockname,nick),*) $1 :Nickname is already in use.
      hinc -m $sockname nickattempts 
      halt
    }
  }
  if (%n.chg. [ $+ [ $sockname ] ]) {
    unset %n.chg. [ $+ [ $sockname ] ]
    chgnick $hget($sockname,nick) $1
    halt
  }
  if (!$hget($sockname,nick)) {
    hadd nicks $1
    hadd $sockname nick $1
    hadd -m $1 $sockname
    if (!$gettok($hget($sockname,realhost),2,33)) && ($hget($sockname,realhost)) {
      hadd $sockname realhost $+($1,$hget($sockname,realhost))
    }
    if (!$gettok($hget($sockname,host),2,33)) && ($hget($sockname,host)) {
      hadd $sockname host $+($1,$hget($sockname,host))
    }
    if ($hget($sockname,realhost)) && ($hget($sockname,ident)) { a.con $sockname | halt }
    halt
  }
  hadd nicks $1
  hadd $sockname nick $1
}
alias a.con {
  hadd -m $sock($1).ip $hget($1,nick)
  sno c *** Connect Notice -- Client connecting on port $hget(settings,port) $+ : $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ )
  if (!$gettok($hget($1,realhost),2,33)) && ($hget($1,realhost)) || ($gettok($hget($1,realhost),2,33) = *) {
    hadd $1 realhost $+($hget($1,nick),$hget($1,realhost))
  }
  if (!$gettok($hget($sockname,host),2,33)) && ($hget($sockname,host)) {
    hadd $sockname host $+($hget($1,nick),$hget($1,host))
  }
  if (!$sock($1)) || (!$hget($1,nick)) {
    squit $1 Your client is not connected, or you got no nick
  halt }
  hadd users $1
  if ($1) var %sockname = $1
  if (%ircd.s.con. [ $+ [ $1 ] ]) { halt }
  var %ircd.s.con. [ $+ [ $1 ] ] = "true"
  hinc -m data connects
  hsave cloak data\cloaks.db
  hsave data data\reads.dll
  hadd $1 server $hget(settings,server)
  hadd $1 serverDesc $hget(settings,serverdesc)
  if ($hget(settings,password)) {
    if (!%p. [ $+ [ %sockname ] ]) {
      sockwrite -n %sockname 501 %sockname :ERROR - No password given
      squit %sockname No password given
      unset %sockname %p. [ $+ [ %sockname ] ]
    halt }
    if (%p. [ $+ [ %sockname ] ] !=== $hget(settings,password)) {
      squit %sockname Invalid password given
      unset %sockname %p. [ $+ [ %sockname ] ]
    halt }
  }
  if ($hget($sock($1).ip,logins) > 1) {
    sno C *** Clone Alert -- Clone detected from $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ ) $+([,$sock($1).ip,]) Client has logged in $hget($sock($1).ip,logins) time(s)
  }
  if ($hget(settings,versioncheck)) {
    sockwrite -n $1 $+(:,$hget(settings,server)) PRIVMSG $hget($1,nick) :VERSION
    .timervrsvlc $+ $1 1 3 vrsvlc $1
  }
  sockwrite -n $1 $+(:,$hget(settings,server)) 001 $hget($1,nick) :Welcome to the $hget(settings,serverDesc) $hget($1,realhost)
  sockwrite -n $1 $+(:,$hget(settings,server)) 002 $hget($1,nick) :Your host is $hget(settings,server) $+ , running ProvisionIRCd $vrs
  sockwrite -n $1 $+(:,$hget(settings,server)) 003 $hget($1,nick) :This server was created $hget(settings,cdate)
  sockwrite -n $1 $+(:,$hget(settings,server)) 004 $hget($1,nick) $hget(settings,server) ProvisionIRCd $vrs $umodes $chmodes
  sockwrite -n $1 $+(:,$hget(settings,server)) 005 $hget($1,nick) $+(CMDS=,$cmds) MAXLIST=b:60,e:60,I:60 $+(NICKLEN=,$hget(settings,maxnicklen)) $+(CHANNELLEN=,$hget(settings,maxchanlen)) $+(TOPICLEN=,$hget(settings,maxtopiclen)) are supported by $hget(settings,serverdesc)
  sockwrite -n $1 $+(:,$hget(settings,server)) 005 $hget($1,nick) SILENCE=15 MODES=15 $+(CHANTYPES=,$chtypes) $+(PREFIX=,$iprefix) $+(CHANMODES=,$chmodes) $+(NETWORK=,$hget(settings,serverdesc)) ELIST=MNUCT $+(STATUSMSG=,$statusmsg) EXCEPTS INVEX are supported by $hget(settings,serverdesc)
  sockwrite -n $1 $+(:,$hget(settings,server)) 251 $hget($1,nick) :There are $calc($hget(users,0).item + $hget(gusers,0).item) $+(user,$iif($calc($hget(users,0).item + $hget(gusers,0).item) != 1,s)) on $hget(servers,0).item $+(server,$iif($hget(servers,0).item != 1,s))
  sockwrite -n $1 $+(:,$hget(settings,server)) 252 $hget($1,nick) $+(:,$hget(ircops,0).item) IRC $+(Operator,$iif($hget(ircops,0).item != 1,s)) online
  sockwrite -n $1 $+(:,$hget(settings,server)) 254 $hget($1,nick) $+(:,$hget(channels,0).item) $+(channel,$iif($hget(channels,0).item != 1,s)) in use
  sockwrite -n $1 $+(:,$hget(settings,server)) 255 $hget($1,nick) :I have $hget(users,0).item $+(client,$iif($hget(users,0).item != 1,s)) and $hget(servers,0).item $+(server,$iif($hget(servers,0).item != 1,s))
  sockwrite -n $1 $+(:,$hget(settings,server)) 265 $hget($1,nick) $+(:,$hget(users,0).item) $+(user,$iif($hget(users,0).item != 1,s)) on this server. Max: $hget(data,maxloc)
  sockwrite -n $1 $+(:,$hget(settings,server)) 266 $hget($1,nick) $+(:,$calc($hget(users,0).item + $hget(gusers,0).item)) $+(user,$iif($calc($hget(users,0).item + $hget(gusers,0).item) != 1,s)) on entire network. Max: $hget(data,maxglob)
  if ($hget(settings,modesonconnect)) { chgumode $1 $+(+,$iif($remove($hget(settings,modesonconnect),-,+),$remove($hget(settings,modesonconnect),-,+))) 0 $hget($1,nick) }
  if (*x* !iswmcs $hget($1,modes)) { hadd -m $1 host $+($hget($1,nick),!,$hget($1,ident),@,$iif($hget(data,$sock($sockname).ip),$hget(data,$sock($sockname).ip),$sock($1).ip)) }
  if ($hget(data,logonnews)) { sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* [Logon News - $+($asctime($gettok($hget(data,logonnews),2,32),$+(dddd,$chr(44)) mmmm dd yyyy),])  $gettok($hget(data,logonnews),3-,32) $+([,$gettok($hget(data,logonnews),1,32),]) }
  hadd -m $1 signon $ctime($fulldate)
  hinc -c $1 idle
  unset %nick %change
  motd $1 .
  if ($hget(settings,proxyscan)) {
    .timerpc $+ $1 3 30 checkproxy $sock($1).ip $1 NN
  }
  if ($hget(settings,modesonconnect)) chgumode $1 $+(+,$iif($remove($hget(settings,modesonconnect),-,+),$remove($hget(settings,modesonconnect),-,+))) 0 $hget($1,nick)
  if ($hget(users,0).item > $hget(data,maxloc)) {
    hadd data maxloc $hget(users,0).item
    sno g *** Global Notice -- New local user record: $+($hget(data,maxloc),.) On $fulldate
  }
  if ($calc($hget(gusers,0).item + $hget(users,0).item) > $hget(data,maxglob)) {
    hadd data maxglob $calc($hget(gusers,0).item + $hget(users,0).item)
    sno g *** Global Notice -- New global user record: $+($hget(data,maxglob),.) On $fulldate
  }
  ;if (!$hget($1,host) && ($1)) && ($sock($1)) { squit $1 You got no host | halt }
  if ($hget(rnicks,$+(secure_,$hget($1,nick))) = true) && ($sock($1).ip != $hget(rnicks,$+(ip_,$hget($1,nick)))) {
    sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :This nicknamed is IP secured.
    .timerchgnick $+ $1 1 0 CHGNICK $hget($1,nick) $+(Guest,$r(1,999999))
    goto skipw2
    halt
  }
  if ($hfind(rnicks,$hget($1,nick))) {
    sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :This nickname is registered and protected. If it is your nick
    sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :nick, type /LOGIN $hget($1,nick) password.  Otherwise,
    sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :please choose a different nick.
    sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :If you don't change your nick within 1 minute, I will change your nick.
    .timerchgnick $+ $1 1 60 CHGNICK $hget($1,nick) $+(Guest,$r(1,999999))
    hadd sqline $hget($1,nick) $hget($1,nick) $fulldate Being held for registered users
    .timerunsqline1 $+ $hget($1,nick) 1 120 hdel sqline $hget($1,nick)
    :skipw2
  }
  if ($hget($1,nick)) c.n $1
  halt
}
alias -l c.n {
  var %v = 1
  while ($hget(vhost,%v).item) {
    if ($hget(vhost,%v).item = $sock($1).ip) {
      sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Your vHost of $+(,$hget(vhost,$hget(vhost,%v).item),) has been activated [IP based]
      hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($hget(vhost,$hget(vhost,%v).item),@,!))
      break
    }
    inc %v
  }
  if ($left($hget($1,nick),1) isalpha) && ($right($hget($1,nick),-1) isnum) {
    sno A *** Aleatory Alert -- Possible flood clone connecting: $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ ) [WARNING]
    if ($hget(settings,blockalea)) {
      squit $1 You are not allowed to connect to this network
    halt }
  }
  halt
}
alias -l list {
  :list 
  if (%list. [ $+ [ $1 ] ] == $hget(channels,0).item) || ($hget(channels,0).item = 0) {
    .timerlist. [ $+ [ $1 ] ] off
    unset %list. [ $+ [ $1 ] ]
    sockwrite -n $1 $+(:,$hget(settings,server)) 323 $hget($1,nick) :End of /LIST
  halt }
  inc %list. [ $+ [ $1 ] ] 
  if (%list. [ $+ [ $1 ] ]) && (*s* iswmcs $hget(modes,$hget(channels,%list. [ $+ [ $1 ] ]).item)) && (!$hget($1,ircop)) { goto list }
  if ($sock($1)) { 
    sockwrite -n $1 $+(:,$hget(settings,server)) 322 $hget($1,nick) $hget(channels,%list. [ $+ [ $1 ] ]).item $iif($hget($hget(channels,%list. [ $+ [ $1 ] ]).item,users),$hget($hget(channels,%list. [ $+ [ $1 ] ]).item,users),0) $+(:,[,+,$hget(modes,$hget(channels,%list. [ $+ [ $1 ] ]).item),]) $iif($hget(topics,$+(topic_,$hget(channels,%list. [ $+ [ $1 ] ]).item)),$hget(topics,$+(topic_,$hget(channels,%list. [ $+ [ $1 ] ]).item)))
  halt }
}
alias -l cmd.fail {
  sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) $+(:,$upper($1)) Not enough parameters
halt }
alias h.op {
  hadd $1 ircop true
  var %modes = $+($removecs($hget($1,modes),o,X,Z,q,s,v,I,W,H),oXZqsIWH)
  sockwrite -n $1 : $+ $hget($1,nick) MODE $hget($1,nick) +oXZqsIWH
  hadd $1 omodes +oXZqsIWH
  hadd $1 modes %modes
  hadd $1 snomasks +acfgijknoswACFINS
  sockwrite -n $1 $+(:,$hget(settings,server)) 8 $hget($1,nick) Server notice mask (+acfgijknoswACFINS)
  hadd $1 flags +ejksvqrzDEIKRTS
  hadd $1 hop true
  hadd -m hhost $1 $hget($1,host)
  halt
}
alias give.omodes {
  if (o isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,o)
    hadd $1 ircop true
    hadd -m ircops $hget($1,nick)
    hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
    goto skipo
  }
  if (O isincs $readini(opers.conf,$2,modes)) && (o !isincs %omodes) {
    var %omodes = $+(%omodes,O)
    hadd $1 ircop true
    hadd -m ircops $hget($1,nick)
    hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
  }
  :skipo
  if (X isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,X)
    hadd $1 ircop true
    hadd -m ircops $hget($1,nick)
    hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
    goto oumds
  }
  if (N isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,N)
    hadd $1 ircop true
    hadd -m ircops $hget($1,nick)
    hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
    goto oumds
  }
  if (C isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,C)
    hadd $1 ircop true
    hadd -m ircops $hget($1,nick)
    hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
    goto oumds
  }
  if (A isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,A)
    hadd $1 ircop true
    hadd -m ircops $hget($1,nick)
    hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
    goto oumds
  }
  if (T isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,T)
    hadd $1 ircop true
    hadd -m ircops $hget($1,nick)
    hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
    goto oumds
  }
  :oumds
  if (Z isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,Z)
    goto oumds2
  }
  if (a isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,a)
    goto oumds2
  }
  if (P isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,P)
    goto oumds2
  }
  :oumds2
  if (h isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,h)
  }
  if (q isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,q)
  }
  if (s isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,s)
  }
  if (I isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,I)
  }
  if (W isincs $readini(opers.conf,$2,modes)) {
    var %omodes = $+(%omodes,W)
  }
  var %omodes = $+(o,$removecs(%omodes,o))
  sockwrite -n $sockname : $+ $hget($sockname,nick) MODE $hget($sockname,nick) $+(+,$remove(%omodes,+,-))
  hadd $sockname omodes $+(+,$remove(%omodes,-,+))
  hadd $sockname modes $+(+,$remove($hget($sockname,modes),+,-),%omodes)
  give.sno.flgs $1-2
  halt
}
alias give.sno.flgs {
  if (a isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,a)
  }
  if (c isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,c)
  }
  if (f isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,f)
  }
  if (g isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,g)
  }
  if (j isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,j)
  }
  if (k isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,k)
  }
  if (n isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,n)
  }
  if (o isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,o)
  }
  if (s isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,s)
  }
  if (w isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,w)
  }
  if (A isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,A)
  }
  if (C isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,C)
  }
  if (F isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,F)
  }
  if (I isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,I)
  }
  if (N isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,N)
  }
  if (Q isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,Q)
  }
  if (S isincs $readini(opers.conf,$2,snomasks)) {
    var %snomasks = $+(%snomasks,S)
  }
  if ($readini(opers.conf,$2,flags)) {
    var %flags = $+(+,$removecs($readini(opers.conf,$2,flags),-,+,A,B,C,F,G,H,J,L,M,N,O,P,Q,U,V,W,X,Y,Z,a,b,c,d,f,g,h,i,l,m,p,t,u,x,y))
    hadd $1 flags %flags
  }
  if (%snomasks) { hdel $1 snomasks
    hadd $1 snomasks $+(+,%snomasks)
    sockwrite -n $sockname $+(:,$hget(settings,server)) 8 $hget($sockname,nick) Server notice mask ( $+ $hget($sockname,snomasks) $+ )
  }
  add.ohost $sockname $ini(opers.conf,$ini(opers.conf,$2))
}
alias add.ohost {
  hadd -m hhost $1 $hget($1,host)
  if (X isincs $hget($1,modes)) {
    hadd -m $1 olvl 10
    hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,ircadmin),@,!))
    snotice.o $1-2
    halt
  }
  if (N isincs $hget($1,modes)) {
    hadd -m $1 olvl 9
    hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,netadmin),@,!))
    snotice.o $1-2
    halt
  }
  if (Z isincs $hget($1,modes)) {
    hadd -m $1 olvl 8
    hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,servicesrootadmin),@,!))
    snotice.o $1-2
    halt
  }
  if (T isincs $hget($1,modes)) {
    hadd -m $1 olvl 7
    hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,techadmin),@,!))
    snotice.o $1-2
    halt
  }
  if (a isincs $hget($1,modes)) {
    hadd -m $1 olvl 6
    hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,servicesadmin),@,!))
    snotice.o $1-2
    halt
  }
  if (A isincs $hget($1,modes)) {
    hadd -m $1 olvl 5
    hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,serveradmin),@,!))
    snotice.o $1-2
    halt
  }
  if (C isincs $hget($1,modes)) {
    hadd -m $1 olvl 4
    hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,coadmin),@,!))
    snotice.o $1-2
    halt
  }
  if (P isincs $hget($1,modes)) {
    hadd -m $1 olvl 3
    hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,servicesoper),@,!))
    snotice.o $1-2
    halt
  }
  if (o isincs $hget($1,modes)) {
    hadd -m $1 olvl 2
    hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,globop),@,!))
    snotice.o $1-2
    halt
  }
  if (O isincs $hget($1,modes)) {
    hadd -m $1 olvl 1
    hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,locop),@,!))
    snotice.o $1-2
    halt
  }
}
alias -l sjoin {
  var %i 0, %pms
  :sjoinstart
  inc %i
  while (%i <= $calc($count($2,$chr(44)) + 1)) {
    if ($left($gettok($gettok($2,%i,44),1,32),1) = $chr(35)) || ($left($gettok($gettok($2,%i,44),1,32),1) = $chr(43)) {
      if ($hget($gettok($gettok($2,%i,44),1,32),$1) = .i) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($2,%i,44) :You are invisible on channel $+($gettok($2,%i,44),.) To undo, type: /INVISIBLE $+(-,$gettok($2,%i,44))
        goto sjoinstart
      }
      if ($len($gettok($2,%i,44)) > $calc($hget(settings,maxchanlen) + 1)) {
        sockwrite -n $1 $+(:,$hget(settings,server)) 485 $hget($1,nick) $gettok($gettok($2,%i,44),1,32)) :Channel too long
        goto sjoinstart
      }
      if ($hfind($gettok($2,%i,44),$1)) { halt }
      var %x 1
      while %x <= $hget(channels,0).item { inc %x }
      if ($hget($1,ircop)) && (*v* iswmcs $hget($1,flags)) { goto oocend }
      if ($hfind(sqline,$gettok($2,%i,44))) {
        sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $+($gettok($2,%i,44),;) channel not allowed $+([,$gettok($hget(sqline,$+($gettok($2,%i,44))),3-,32),])
        goto sjoinstart
      }
      if ($hfind($gettok($2,%i,44),$1)) { goto sjoinstart }
      var %e = 1
      while $hget($+(excepts_,$gettok($2,%i,44)),%e).item {
        if ($hget($+(excepts_,$gettok($gettok($2,%i,44),1,32)),%e).item iswm $hget($1,host)) || ($hget($+(excepts_,$gettok($2,%i,44)),%e).item iswm $hget($1,realhost)) || ($hget($+(excepts_,$gettok($2,%i,44)),%e).item iswm $+(*!*@,$sock($1).ip)) || ($hget($+(excepts_,$gettok($2,%i,44)),%e).item iswm $hget(xhost,$sockname)) { 
          goto noban
        }
        inc %e
      }
      var %x = 1
      while $hget($+(bans_,$gettok($2,%i,44)),%x).item {
        if ($hget($+(bans_,$gettok($gettok($2,%i,44),1,32)),%x).item iswm $hget($1,host)) || ($hget($+(bans_,$gettok($2,%i,44)),%x).item iswm $hget($1,realhost)) || ($hget($+(bans_,$gettok($2,%i,44)),%x).item iswm $+(*!*@,$sock($1).ip)) || ($hget($+(bans_,$gettok($2,%i,44)),%x).item iswm $hget(xhost,$sockname)) { 
          sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($gettok($2,%i,44),1,32))
          sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $+($gettok($2,%i,44),;) you are banned
          if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
            var %z = 1
            while $hget($gettok($2,%i,44),%z).item {
              if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($gettok($2,%i,44),1,32),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($gettok($2,%i,44),1,32),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
                sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($gettok($2,%i,44),1,32) but is banned (+b)
              }
              inc %z 
            }
          }
          goto sjoinstart
        }
      inc %x }
      :noban
      if (*i* iswmcs $hget(modes,$gettok($2,%i,44))) {
        var %in = 1
        while $hget($+(invites_,$gettok($2,%i,44)),%in).item {
          if ($hget($+(invites_,$gettok($2,%i,44)),%in).item iswm $hget($1,host)) || ($hget($+(invites_,$gettok($2,%i,44)),%in).item iswm $hget($1,realhost)) || ($hget($+(invites_,$gettok($2,%i,44)),%in).item iswm $+(*!*@,$sock($1).ip)) || ($hget($+(invites_,$gettok($2,%i,44)),%in).item iswm $hget(xhost,$sockname)) { 
            goto noinv
          }
          inc %in
        }
      }
      if (*i* iswmcs $hget(modes,$gettok($2,%i,44))) && (!$hfind($+(invites_,$gettok($2,%i,44)),$1)) {
        sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($gettok($2,%i,44),1,32))
        sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $gettok($2,%i,44) $+ : you are not invited
        if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
          var %z = 1
          while $hget($2,%z).item {
            if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
              sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44),%x).item but is not invited (+i)
            }
          inc %z }
        }
        goto sjoinstart
      }
      :noinv
      if (*l* iswmcs $hget(modes,$gettok($2,%i,44))) && ($hget($1,ircop) != true) && ($hget($gettok($gettok($2,%i,44),1,32),0).item >= $hget(data,$+(limit_,$gettok($2,%i,44)))) { 
        sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $gettok($2,%i,44) $+ : channel is full
        if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
          var %z = 1
          while $hget($gettok($2,%i,44),%z).item {
            if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
              sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),1,33) $+ ) tried to join $gettok($2,%i,44) but channel is full (+l)
            }
          inc %z } 
        }
        goto sjoinstart
      }
      if (*k* iswmcs $hget(modes,$gettok($2,%i,44))) {
        if (!$3) {
          sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($gettok($2,%i,44),1,32))
          sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $+($gettok($2,%i,44),;) need correct key
          if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
            var %z = 1
            while $hget($gettok($2,%i,44),%z).item {
              if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
                sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44) but doesn't know the key (+k)
              }
            inc %z }
          }
          goto sjoinstart
        }
      inc %pms }
      if (*k* iswmcs $hget(modes,$gettok($2,%i,44))) && ($gettok($3,%pms,32) !=== $hget(data,$+(key_,$gettok($2,%i,44)))) { 
        sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($gettok($2,%i,44),1,32))
        sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $+($gettok($2,%i,44),;) need correct key
        if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
          var %z = 1
          while $hget($gettok($2,%i,44),%z).item {
            if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
              sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44) but doesn't know the key (+k)
            }
          inc %z }
        }
        goto sjoinstart
      }
      if (*O* iswmcs $hget(modes,$gettok($2,%i,44))) && (!$hget($1,ircop)) { 
        sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($gettok($2,%i,44),1,32))
        sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $gettok($2,%i,44),1,32) $+ : you are not an IRC Operator
        if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
          var %z = 1
          while $hget($gettok($2,%i,44),%z).item {
            if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
              sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44) but isn't an IRC operator (+O)
            }
          inc %z }
        }
        goto sjoinstart
      }
      if (*p* iswmcs $hget(modes,$gettok($2,%i,44))) {
        sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($2,%i,44))
        sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $gettok($gettok($2,%i,44),1,32) $+ : channel is private
        if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
          var %z = 1
          while $hget($gettok($2,%i,44),%z).item {
            if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($gettok($2,%i,44),1,32),%z).item)) {
              sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44) but the channel is private (+p)
            }
          inc %z }
        }
        goto sjoinstart
      }
      if (*R* iswmcs $hget(modes,$gettok($2,%i,44))) && (!$hget($1,loggedin)) && (!$hget($1,ircop)) { sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($2,%i,44))
        sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $gettok($2,%i,44) $+ : you are not logged/registered in
        if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
          var %z = 1
          while $hget($gettok($2,%i,44),%z).item {
            if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
              sockwrite -n $hget($2,%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$2) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44) but user is not logged in (+R)
            }
            inc %z
          }
        }
        goto sjoinstart
      }
      :oocend
      var %ch = $gettok($2,%i,44)
      if ($hget(joinfprot,%ch)) && (%joins. [ $+ [ $gettok($gettok($2,%i,44),1,32) ] ]) {
        if (%joins. [ $+ [ $gettok($gettok($2,%i,44),1,32) ] ] >= $gettok($hget(joinfprot,%ch),1,32)) {
          sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,%ch)
          sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $+(%ch,:) channel joins currently blocked for $gettok($hget(joinfprot,%ch),2,32) seconds due flood
          goto sjoinstart
        }
      }
      if ($hget(joinfprot,%ch)) {
        inc %joins. [ $+ [ $gettok($2,%i,44) ] ]
        .timerjoinfprot $+ $gettok($2-,%i,44) 1 $gettok($hget(joinfprot,%ch),2,32) unset %joins. [ $+ [ $gettok($2,%i,44) ] ]
      }
      hsave modes data\chmodes.db
      if (!$hget($gettok($2,%i,44),$1)) {
        hadd -m $gettok($2,%i,44) $1 .
        if ($hget($gettok($2,%i,44),0).item == 1) { 
          hadd -m channels $gettok($2,%i,44) $1
          hadd $gettok($2,%i,44) ctime $ctime
          if (!$hfind(rchans,$gettok($2,%i,44))) && ($left($gettok($gettok($2,%i,44),1,32),1) = $chr(35)) { 
            hadd -m +o_ $+ $gettok($2,%i,44) $1
            hadd -m $gettok($2,%i,44) $1 .@
          }
        }
        if ($gettok($2,%i,44) = $hget(settings,helpchan)) && ($hget($gettok($2,%i,44),0).item = 1) && (!$hfind(rchans,$gettok($2,%i,44))) && (h !isincs $hget($1,modes)) {
          chgumode $1 +h $gettok($2,%i,44) 0 - -
        }
      }
      .names $1 $gettok($2,%i,44) .
      if ($3 != SA) {
        sno j *** Join/Part Notice -- $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ ) has joined $hfind(channels,$2)
      }
      if ($hfind($+(invites_,$gettok($2,%i,44)),$1)) { hdel $+(invites_,$gettok($2,%i,44)) $1 }
      if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
        var %z = 1
        while $hget($gettok($2,%i,44),%z).item {
          if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
            sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) has joined $gettok($2,%i,44)
          }
          inc %z
        }
      }
      goto sjoinstart
      halt
    }
    else {
      sockwrite -n $1 $+(:,$hget(settings,server)) 403 $hget($1,nick) $gettok($2,%i,44) :is not a valid channel
      inc %x
      goto sjoinstart
    }
    :sjoinend
  }
  unset %i %z
  halt
}
alias snotice.o {
  sockwrite -n $sockname $+(:,$hget(settings,server)) 381 $hget($sockname,nick) :You are now an IRC Operator.
  if (X isincs $hget($1,modes)) {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now an IRC Administrator (X)
  halt }
  if (N isincs $hget($1,modes)) {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Network Administrator (N)
  halt }
  if (Z isincs $hget($1,modes)) {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Services Root Administrator (A)
  halt }
  if (T isincs $hget($1,modes)) {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Technical Administrator (T)
  halt }
  if (A isincs $hget($1,modes)) {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Server Administrator (A)
  halt }
  if (a isincs $hget($1,modes)) {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Services Administrator (a)
  halt }
  if (C isincs $hget($1,modes)) {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Co Administrator (c)
  halt }
  if (o isincs $hget($1,modes)) {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now an IRC Operator (o)
  halt }
  if (P isincs $hget($1,modes)) {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Services Operator (P)
  halt }
  if (O isincs $hget($1,modes)) {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Local Operator (O)
  halt }
  else {
    sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) logged in as an IRC Operator without any privileges
  }
  halt
}
alias cmds return NICK,USER,USERHOST,ISON,TIME,PING,PONG,NAMES,WHO,IRCDHELP
alias hcmds return PRIVMSG NOTICE ISON PING PONG NICK USER MODE USERHOST QUIT KILL KLINE ELINE ZLINE SQLINE UNSQLINE LUSERS SAJOIN SAPART SANICK CLIENT PASS SERVER PROTOCL JOIN PART STATS OPER REGISTER LOGIN LOGOUT DROP NS NICKSERV CS CHANSERV AUTH ID IDENTIFY WHO NAMES TOPIC KICK ADDOPER DELOPER WHOIS INFO INVISIBLE AWAY REHASH WHOIS WHOWAS IRCOPS AKICK ACCESS MOTD LIST NICKSET CHANSET TIME IRCDHELP HELP HELPOP WALLOPS
alias umodes return ixXNTACoOchilqrsvwxHISW 
alias chmodes return beIqazO,kf,l,psmntirNORV
alias vrs return 2.0.5.-beta Quickupdate.7
alias ip_aq return $iif($hget(settings,ip_aq),1)
alias ip_a return &
alias ip_q return ~
alias iprefix return $+($chr(40),$+($iif($ip_aq,qa),ohvz,$chr(41)),$iif($ip_aq,$+($ip_q,$ip_a)),@%+-))
alias whomasks {
  var %mds = $hget($1,modes)
return $+($iif($hget(away,$1),G,H),$iif(r isincs %mds,+),$iif(c isincs %mds,c),$iif(o isincs %mds,O),$iif(v isincs %mds,^,),$iif(h isincs %mds,?),$iif(x isincs %mds,x),$iif($hfind($+(+q_,$2),$1),*),$iif($hfind($+(+a_,$2),$1),:),$iif($hfind($+(+o_,$2),$1),@),$iif($hfind($+(+h_,$2),$1),%),$iif($hfind($+(+v_,$2),$1),+)) }
alias statusmsg return @&+
alias chtypes return #+
alias nickchrs return a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0 $chr(45) $chr(91) $chr(92) $chr(93) $chr(94) $chr(95) $chr(96) $chr(123) $chr(124) $chr(125)
alias hostchrs return a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0 $chr(45) $chr(46) $chr(91) $chr(92) $chr(93) $chr(94) $chr(95) $chr(96) $chr(124)
alias makemask {
  if ($count($1,@) > 1) || ($count($1,!) > 1) {
    unset %modes %params
    return
  }
  if (!@ !isin $1) && (@! !isin $1) {
    if (! !isin $1) && (@ !isin $1) && (. !isin $1) {
      return $+($1,!*@*)
    }
    else {
      return $+($iif(@ isin $1 && ! !isin $1,*!),$iif($left($1,1) = !,*),$iif(. isin $1 && @ !isin $1,*!*@),$1,$iif(@ !isin $1 && . !isin $1 && ! isin $1,@*),$iif($right($1,1) = @ && @ !isin $1,*),$iif($right($1,1) = @ && (!$gettok($1,2,64)),*))
    }
  }
}
on *:SOCKREAD:ircd.*:{
  var %ircd
  sockread %ircd
  tokenize 32 %ircd
  :error
  if ($error) { reseterror
  halt }
  if ($sock(link.*)) { sockwrite -n $sock(link.*) $1- }
  if ($1) { hinc cmds $1 }
  hinc -m data sockreads
  hsave cmds data\data.dll
  hsave data data\reads.dll
  if ($hget($sockname,host)) && ($hget($sockname,ircop) != true) && ($1 != ISON) && (!$hget($sockname,uline) ) {
    hinc -u5 $sockname sendq $sockbr
    if ($hget($sockname,sendq) >= $hget(settings,maxsendq)) {
      sno f *** Flood Alert -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) has reached his max SendQ ( $+ $hget($sockname,sendq) $+ ) while the limit is $hget(settings,maxsendq)
      squit $sockname Excess flood - Don't flood here, keep it cool
    halt }
  }
  ;if (!$1) || ($1 = $CRLF) { squit $sockname Unauthorized connection | halt }
  if ($left($1,1) = :) && ($hget($sockname,uline)) && ($hget($right($1,-1),socket)) {
    sockwrite -n $hget($right($1,-1),socket) $1-
    halt
  }
  if ($1 != ADMIN) && ($1 != PART) && ($1 != QUIT) {
    var %s = 1 
    while $hget(shuns,%s).item {
      if ($hget(shuns,%s).item iswm $+($hget($sockname,ident),@,$hget(data,$sock($sockname).ip))) || ($hget(shuns,%s).item = $+($hget(%sockname,ident),@,$sock($sockname).ip)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) * Command blocked, you are shunned. $chr(91) $+ $hget(shuns,nick_ $+ $hget(shuns,%s).item) $+ $chr(93) $hget(shuns,$+(reason_,$hget(shuns,%s).item))
      halt }
      inc %s
    }
  }
  if ($istok($hcmds,$1,32) = $false) && ($left($1,1) !isnum) && ($hget($sockname,host)) {
    if ($hget($sockname,realhost)) && ($hget($sockname,nick)) {
    sno S *** Spy Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) used command: $1- }
  }
  hadd -m $sockname lastusedcommand $upper($1) $2 $upper($3)
  if ($1 == NICK) {
    if (!$2) { halt }
    if ($hget($sockname,uline)) {
      ;hinc ulines
      hadd gusers $2
      if ($calc($hget(gusers,0).item + $hget(users,0).item) > $hget(data,maxglob)) {
        hadd data maxglob $calc( $hget(gusers,0).item + $hget(users,0).item )
        var %x = 1
        while $hget(ircops,%x).item {
          sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- New global user record: $+($hget(data,maxglob),.) On $fulldate
        inc %x }
      }
      hadd nicks $2
      hadd -m $2 uline true
      hadd -m $2 socket $sockname
      hadd -m $sockname signon $4
      hadd -m $sockname ident $5
      hadd -m $sockname host $7
      hadd -m $sockname realhost $6
      hadd -m $sockname modes $9
      hadd -m $sockname realname $11-
      halt
    }
    var %change = $iif(:* iswm $2,$left($right($2,-1),$hget(settings,maxnicklen)),$left($2,$hget(settings,maxnicklen)))
    if (!$hget($sockname,modes)) { hadd -m $sockname modes + }
    if (!$hget($sockname,host)) && (%change) || (!$hget($sockname,nick)) {
      if ($hget(defcon)) {
        squit $sockname * This server is in DEFCON mode, please try again later.
        halt
      }
      nick.val %change
      halt
    }
    if (!$3) {
      if ($hget(defcon)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, /NICK command is temporary disabled.
        halt
      }
      set %n.chg. [ $+ [ $sockname ] ] 1
      nick.val %change
      halt
    }
  halt }
  elseif ($1 == CLIENT) {
    if ($hget(defcon)) || (!$10) || ($hget($sockname,nick)) { halt }
    hfree $2
    hadd -m $sockname nick $2 
    hadd -m $sockname realname $right($13-,-1)
    hadd -m $sockname modes $5 | hadd -m $sockname host $+($2,!,$7,@,$8)
    hadd -m $sockname realhost $+($2,!,$7,@,$8)
    hadd -m nicks $2
    hadd -m $sockname server $10
    hadd -m $sockname serverdesc $hget(settings,serverdesc)
    hadd -m $sockname level uline 
    if ($2 = $readini(ircd.conf,enforcer,nick)) { hadd -m Enforcer nick $2 }
    hadd -m $2 $sockname
    hadd gusers $sockname
    if ($calc($hget(gusers,0).item + $hget(users,0).item) > $hget(data,maxglob)) {
      hadd data maxglob $hget(gusers,0).item
      var %x = 1 | while $hget(ircops,%x).item {
        sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- New global user record: $+($hget(data,maxglob),.) On $fulldate
      inc %x }
    }
    halt
  }
  elseif ($1 == USER) {
    if (!$5) { cmd.fail $1 | halt }
    if ($hget($sockname,host)) && ($hget($sockname,nick)) && ($hget($sockname,modes)) && ($hget($sockname,ident)) && ($hget($sockname,realname)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 462 $hget($sockname,nick) :You may not reregister
    halt }
    if (!$hget($sockname,ident)) { hadd -m $sockname ident $remove($left($2,12),$chr(91),$chr(93))  }
    if (!$hget($sockname,realname)) { hadd -m $sockname realname $iif($left($5,1) = :,$right($5,-1),$5-) }
    if (!$hget($sockname,modes)) { hadd -m $sockname modes + }
    if (!@ isin $hget($sockname,realhost)) || (!@ isin $hget($sockname,host)) {
      hadd $sockname realhost $+($hget($sockname,nick),!,$hget($sockname,ident),@,$gettok($hget($sockname,realhost),2,64))
      hadd $sockname host $+($hget($sockname,nick),!,$hget($sockname,ident),@,$gettok($hget($sockname,host),2,64))
    }
    if ($hget($sockname,nick)) && ($hget($sockname,realhost)) { a.con $sockname | halt }
    if ($hget(defcon)) {
      squit $sockname * This server is in DEFCON mode, please try again later.
    halt }
    halt
  }
  elseif ($1 == USERHOST) {
    var %x = 2
    while ($ [ $+ [ %x ] ]) {
      if ($hfind(nicks,$ [ $+ [ %x ] ])) {
      var %userhost = %userhost $+($hfind(nicks,$ [ $+ [ %x ] ]),*,=+,$gettok($hget($hget($ [ $+ [ %x ] ],1).item,host),2,33)) }
    inc %x }
    sockwrite -n $sockname $+(:,$hget(settings,server)) 302 $hget($sockname,nick) $+(:,%userhost)
    halt
  }
  elseif ($1 == ISON) {
    var %x = 2 | while ($ [ $+ [ %x ] ]) {
      if ($hfind(nicks,$ [ $+ [ %x ] ])) && ($hget($hfind(nicks,$ [ $+ [ %x ] ]),1).item) {
      var %ison = %ison $ [ $+ [ %x ] ] }
    inc %x }
    sockwrite -n $sockname $+(:,$hget(settings,server)) 303 $hget($sockname,nick) $+(:,$iif(%ison,%ison,no such user))
    halt
  }
  elseif ($1 == TIME) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 391 $hget($sockname,nick) $+(:,$day $asctime(mmmm dd yyyy) - $gettok($time,1-2,58) $asctime(zzz))
    halt
  }
  elseif ($1 == PONG) {
    .timerping2 $+ $sockname 0 602 squit $sockname Ping timeout - Where was the Pong?!
  halt }
  elseif ($1 == PING) {
    if ($2 = $hget(settings,server)) { sockwrite -n $sockname PONG $+(:,$hget(settings,server)) }
  halt }
  elseif ($1 == CONNECT) {
    echo -s $sockname > /CONNECT: $2-
    if (!$2) { cmd.fail $1 | halt }
    ;if ($3) { halt }
    if (!$ini(links.conf,$2)) {
    sockwrite -n $sockname : $+ $hget(settings,server) NOTICE $hget($sockname,nick) :Server $2 isn't configured for linking | halt }
    if ($sock(link. [ $+ [ $2 ] ])) {
    sockwrite -n $sockname : $+ $hget(settings,server) NOTICE $hget($sockname,nick) :Link $2 already exists. | halt }
    else {
      set %conserver $2
      set %sockname $sockname
      sockopen link. [ $+ [ $2 ] ] $readini(links.conf,$2,ip) $readini(links.conf,$2,port)
    }
    halt
  }
  elseif ($1 == PASS) {
    ;Password komt niet binnen
    set %p. [ $+ [ $sockname ] ] $iif($left($2,1) = :,$right($2,-1),$2)
    echo -s > /PASS: %p. [ $+ [ $sockname ] ] .. is it $readini(links.conf,%ls,pass) ?
    echo -s > Password set p.sockname: %p. [ $+ [ $sockname ] ]
    if (%ls) && (!%pass. [ $+ [ %ls ] ]) {
      if (%p. [ $+ [ $sockname ] ] !=== $readini(links.conf,%ls,pass)) {
        var %x = 1
        while $hget(ircops,%x).item {
          sockwrite -n $hget($hget(ircops,%x).item,1).item : $+ $hget(settings,server) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Link denied for server %ls [bad password]
          inc %x
        }
        sockwrite -n $sockname LINK DENIED != PASSWORD
        sockclose $sockname
        halt
      }
    }
    if ($2 === $readini(links.conf,%ls,pass)) || (%pass. [ $+ [ %ls ] ]) {
      unset %pass. [ $+ [ %ls ] ]
      var %x = 1
      while $hget(ircops,%x).item {
        sockwrite -n $hget($hget(ircops,%x).item,1).item : $+ $hget(settings,server) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :(Link) Password accepted for server %ls
      inc %x }
      sockwrite -n $sockname LINK ACCEPTED = PASSWORD        
      var %y = 1
      hadd -m servers %ls
      hadd -m $sockname sname %ls
      set %pass. [ $+ [ %ls ] ] true
      sockopen $+(link.,%2) $readini(links.conf,%ls,ip) $readini(links.conf,%ls,port)
    }
    unset %s
    halt
  }
  elseif ($1 == SERVER) {
    echo -s > /SERVER: $2-
    set %ls $2
    if (!$hget($sockname,host)) {
      if (!$ini(links.conf,%ls)) {
        var %x = 1
        while $hget(ircops,%x).item {
          sockwrite -n $hget($hget(ircops,%x).item,1).item : $+ $hget(settings,server) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Link denied for server $2 [no matching link configuration]
          inc %x
        }
        sockwrite -n $sockname LINK DENIED != MATCH
        sockclose $sockname
      }
      else {
        var %x = 1
        while $hget(ircops,%x).item {
          sockwrite -n $hget($hget(ircops,%x).item,1).item : $+ $hget(settings,server) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- $2 requested a link
          inc %x
        }
        if ($2 = $hget(settings,uline)) {
          hfree $sockname
          hadd -m $sockname uline true
        }
      }
    }
    halt
  }
  elseif ($1 == PART) {
    if (!$hget($sockname,host)) { halt }
    if (!$2) { cmd.fail $1 | halt }
    spart $sockname $2 $remove($3-,SAPART:)
  halt }
  elseif ($1 == QUIT) {
    hinc -m data disconnects
    squit $sockname $hget(settings,quitprefix) $right($2-,-1)
  halt }
  elseif ($1 == NOTICE) {
    if ($2 = $hget(settings,server)) && (!$hget($sockname,vrsvl)) && (VERSION isincs $3) { hadd $sockname vrsvl true | halt }
    if (!$hget($sockname,host)) || ($3 === :LAGCHK) { halt }
    if (!$3) { cmd.fail $1 | halt }
    hdel $sockname idle
    hinc -c $sockname idle
    if ($hget(defcon)) && (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, log in to send notice's | halt }
    var %n = 1
    while (%n <= $calc($count($2,$chr(44)) + 1)) {
      if ($left($gettok($gettok($2,%n,44),1,32),1) != $chr(35) && $left($gettok($gettok($2,%n,44),1,32),1) != $chr(43)) && (!$hfind(nicks,$gettok($gettok($2,%n,44),1,32))) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :No such nick
      goto noticeend }
      if ($left($gettok($gettok($2,%n,44),1,32),1) = $chr(35) || $left($gettok($gettok($2,%n,44),1,32),1) = $chr(43)) && (!$hfind(channels,$gettok($gettok($2,%n,44),1,32))) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :No such channel
      goto noticeend }
      if ($hget($gettok($gettok($2,%n,44),1,32),$sockname) = .i) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :You are invisible on channel $gettok($gettok($2,%n,44),1,32), so please shut up. To undo, type: /INVISIBLE $+(-,$gettok($gettok($2,%n,44),1,32)) | goto noticeend }
      if ($hfind($+(+z_,$gettok($gettok($2,%n,44),1,32)),$sockname)) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :You cannot speak (+z $hget($sockname,nick) $+ ) | goto noticeend }
      if (*n* iswmcs $hget(modes,$gettok($gettok($2,%n,44),1,32))) && (!$hfind($gettok($gettok($2,%n,44),1,32),$sockname)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :No external channel messages (+n) ( $+ $gettok($gettok($2,%n,44),1,32) $+ )
      goto noticeend }
      if (*m* iswmcs $hget(modes,$gettok($gettok($2,%n,44),1,32))) && (!$hfind($+(+v_,$gettok($gettok($2,%n,44),1,32)),$sockname)) && (!$hfind($+(+h_,$gettok($gettok($2,%p,44),1,32)),$sockname)) && (!$hfind($+(+o_,$gettok($gettok($2,%n,44),1,32)),$sockname)) && (!$hfind($+(+a_,$gettok($gettok($2,%n,44),1,32)),$sockname)) && (!$hfind($+(+q_,$gettok($gettok($2,%n,44),1,32)),$sockname)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :Channel is moderator, you need voice (+v) ( $+ $gettok($gettok($2,%p,44),1,32) $+ )
      goto noticeend }
      var %y = 1
      while $ini(spamfilter.conf,%y) {
        if (*N* iswmcs $readini(spamfilter.conf,$ini(spamfilter.conf,%y),type)) && ($ini(spamfilter.conf,%y) isin $3-) && ($hget($sockname,ircop) != true) {
          if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = block) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) Message blocked: $readini(spamfilter.conf,$ini(spamfilter.conf,%y),reason)
            sno F *** Spamfilter Blockage -- Spamfilter match by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) in $gettok($gettok($2,%n,44),1,32) matching $ini(spamfilter.conf,%y) $+([,$3-])
          goto noticeend }
          if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = report) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) Message blocked: $readini(spamfilter.conf,$ini(spamfilter.conf,%y),reason)
            sno F *** Spamfilter Report -- Spamfilter match by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) in $gettok($gettok($2,%n,44),1,32) matching $ini(spamfilter.conf,%y) $+([,$3-])
          }
          hdel $sockname idle
          hinc -c $sockname idle
          if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = replace) {
            var %x = 1
            while ($hget($gettok($gettok($2,%n,44),1,32),%x).item) {
              if ($sock($hget($gettok($gettok($2,%n,44),1,32),%x).item)) {
              sockwrite -n $hget($gettok($gettok($2,%n,44),1,32),%x).item $+(:,$hget($sockname,host)) NOTICE $gettok($gettok($2,%n,44),1,32) $iif(*S* iswmcs $hget(modes,$3),$strip($replace($3-,$ini(spamfilter.conf,%y),<censored>)),$replace($3-,$ini(spamfilter.conf,%y),<censored>)) }
              if ($left($gettok($gettok($2,%n,44),1,32),1) != $chr(35) && $left($gettok($gettok($2,%n,44),1,32),1) != $chr(43)) && ($hget(away,$hget($gettok($gettok($2,%n,44),1,32),1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 301 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) $hget(away,$hget($gettok($gettok($2,%n,44),1,32),1).item) }
            inc %x }
          goto noticeend }
        }
        inc %y
      }
      if ($left($gettok($gettok($2,%n,44),1,32),1) = $chr(35)) || ($left($gettok($gettok($2,%n,44),1,32),1) = $chr(43)) {
        if ($hget(noticefprot,$gettok($gettok($2,%n,44),1,32))) && (%notices. [ $+ [ $gettok($gettok($2,%n,44),1,32) ] ] >= $gettok($hget(noticefprot,$2),1,32)) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Don't flood! Channel notices are blocked for $gettok($hget(noticefprot,$gettok($gettok($2,%n,44),1,32)),1,32) seconds
        goto noticeend }
        if ($hget(noticefprot,$gettok($gettok($2,%n,44),1,32))) {
        inc %notices. [ $+ [ $gettok($gettok($2,%n,44),1,32) ] ] }
        if (%notices. [ $+ [ $2 ] ] = 1) { .timernoticef $+ $gettok($gettok($2,%n,44),1,32) 1 $gettok($hget(noticefprot,$gettok($gettok($2,%n,44),1,32)),1,32) unset %notices. [ $+ [ $gettok($gettok($2,%n,44),1,32) ] ] }
      }
      var %x = 1
      while ($hget($gettok($gettok($2,%n,44),1,32),%x).item) {
        if ($sock($hget($gettok($gettok($2,%n,44),1,32),%x).item)) {
          sockwrite -n $hget($gettok($gettok($2,%n,44),1,32),%x).item $+(:,$hget($sockname,host)) NOTICE $gettok($gettok($2,%n,44),1,32) $iif(*S* iswmcs $hget(modes,$2),$strip($3-),$3-)
        }
        inc %x
      }
      :noticeend
      sno i *** Idle Notice -- The idle of $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) has been reset (/NOTICE $gettok($gettok($2,%n,44),1,32) $+ )
      inc %n
    }
    halt
  }
  if (%l.ircd) { sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :* Server %ircd temporary overloaded. | halt }
  var %l.ircd "true"
  if (!$hget($sockname,realhost)) && (!$hget($sockname,uline)) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) 462 $hget($sockname,nick) $+(:,$upper($1)) You have not registered
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* If you having problems while connecting, please try reconnecting.
  halt }
  elseif ($1 == MOTD) { motd $sockname | halt }
  elseif ($1 == ADMIN) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 256 $hget($sockname,nick) :Administrative info about $hget(settings,server)
    sockwrite -n $sockname $+(:,$hget(settings,server)) 257 $hget($sockname,nick) $+(:,$readini(ircd.conf,admin,nick))
    sockwrite -n $sockname $+(:,$hget(settings,server)) 257 $hget($sockname,nick) $+(:,$readini(ircd.conf,admin,email))
    sockwrite -n $sockname $+(:,$hget(settings,server)) 257 $hget($sockname,nick) $+(:,$readini(ircd.conf,admin,web)))
  halt }
  elseif ($1 == NAMES) { names $sockname $2 | halt }
  elseif ($1 == CLONES) {
    if (!$hget($sockname,ircop)) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator
    halt }
    sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Clones on $hget(settings,server) $+ : | sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :-
    var %x = 1
    while ($hget(users,%x).item) { 
      if ($hget($sock($hget(users,%x).item).ip,logins) > 1) {
        var %n = 1
        while ($hget($sock($hget(users,%x).item).ip,%n).item) && (!%showed. [ $+ [ $sock($hget(users,%x).item).ip ] ]) {
          if ($hget($sock($hget(users,%x).item).ip,%n).item != logins) {
            inc %clonesnr. [ $+ [ $sock($hget(users,%x).item).ip ] ]
            set %clones. [ $+ [ $sock($hget(users,%x).item).ip ] ] %clones. [ $+ [ $sock($hget(users,%x).item).ip ] ] $hget($sock($hget(users,%x).item).ip,%n).item
          }
          inc %n
        }
        if (%clones. [ $+ [ $sock($hget(users,%x).item).ip ] ]) {
          set -u0 %realhost. [ $+ [ $sock($hget(users,%x).item).ip ] ] $gettok($hget($hget($sock($hget(users,%x).item).ip,%n).item,realhost),2-,33)
          sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :* Found %clonesnr. [ $+ [ $sock($hget(users,%x).item).ip ] ] clones from IP address $+($sock($hget(users,%x).item).ip,:)
          sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Nicks: %clones. [ $+ [ $sock($hget(users,%x).item).ip ] ]
          sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :-
          set -u0 %showed. [ $+ [ $sock($hget(users,%x).item).ip ] ] true
        }
        unset %clones. [ $+ [ $sock($hget(users,%x).item).ip ] ] %clonesnr. [ $+ [ $sock($hget(users,%x).item).ip ] ]
        var %clones = true
      }
      inc %x
    }
    if (!%clones) { sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :No clones found on this server. }
    sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :End of /CLONES command.
  halt }
  elseif ($1 == TRACE) {
    if ($hget($sockname,ircop) != true) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator
    halt }
    if (*T* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    halt }
    if (!$2) { cmd.fail $1 | halt }
    if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :User not online | halt }
    else { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :~~~~~~~~~~~~~~~~~~~~~~
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Information on user $+(,$hfind(nicks,$2),)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Connection time: $duration($sock($hget($2,1).item).to)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Bytes received: $sock($hget($2,1).item).rcvd
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Bytes sent: $sock($hget($2,1).item).sent
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Logged in: $hget($sock($hget($2,1).item).ip,logins) time(s)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Authed as: $iif($hget($hget($2,1).item,loggedin),$hget($hget($2,1).item,loggedin),not authed.)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Client is $iif(!$ini(opers.conf,$2),not) an IRC Operator $iif($hget($sock($hget($2,1).item),ircop) = true,[logged in],[not logged in])
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Usermodes: $hget($sock($hget($2,1).item),modes)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Snomasks: $hget($sock($hget($2,1).item),snomasks)
      var %i 1, %chans, %amount 0 | while %i <= $hget(channels,0).item {
        if ($hget($hget(channels,%i).item,$hget($2,1).item)) {
          if (*s* !iswmcs $hget(modes,$hget(channels,%i).item)) {
            var %chans = %chans $hget(channels,%i).item
            inc %amount
          }
        }
      inc %i }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :In $iif(%amount >= 1,%amount,no) channels $iif(%chans,$chr(91) $+ %chans $+ $chr(93))
      if %amount = 0 { continue }
      if ($hget(data,$sock($hget($2,1).item).ip)) sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Location: $hget(data,$sock($hget($2,1).item).ip)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Last used command: $hget($sock($hget($2,1).item),lastusedcommand)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Connected via: $gettok($gettok($hget($sock($hget($2,1).item),realhost),2,33),2,64) $chr(91) $+ $sock($hget($2,1).item).ip $+ $chr(93)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Cloaked host: $gettok($gettok($hget($sock($hget($2,1).item),host),2,33),2,64)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Ident: $gettok($gettok($hget($sock($hget($2,1).item),host),2,33),1,64)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Realname: $hget($sock($hget($2,1).item),realname)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :** PLEASE ENTER /QUIT IF YOU DON'T LIKE THIS **
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :End of /TRACE command.
    }
  halt }
  elseif ($1 == MODE) {
    unset %param %params %t.modes %modes %omodes %snomasks %-snomasks %+-
    if (!$2) { cmd.fail $1 | halt }
    if ($left($2,1) = $chr(35)) || ($left($2,1) = $chr(43)) {
      if (!$3) {
        if ($hfind($2,$sockname)) {
          var %x = 1
          while ($mid($hget(modes,$2),%x,1)) {
            if ($mid($hget(modes,$2),%x,1) === k) { set %chkl %chkl $hget(data,$+(key_,$2))  }
            if ($mid($hget(modes,$2),%x,1) === l) { set %chkl %chkl $hget(data,$+(limit_,$2)) }
            inc %x
          }
          sockwrite -n $sockname $+(:,$hget(settings,server)) 324 $hget($sockname,nick) $2 $+(+,$remove($hget(modes,$2),+)) $iif($hfind($2,$sockname),%chkl)
          sockwrite -n $sockname $+(:,$hget(settings,server)) 329 $hget($sockname,nick) $2 $hget($2,ctime)
          unset %chkl
          hsave modes data\chmodes.db
          halt
        }
        halt
      }
      if ($3) {
        unset %ov
        smode $sockname $2 $3-
      }
      halt
    }
    elseif ($hfind(nicks,$2)) && ($2 !== $hget($sockname,nick)) && (*v* iswmcs $hget($sockname,flags)) && ($hget($sockname,ircop)) {
      %sockname = $sockname
      chgumode $hget($2,1).item $3- - $hget($sockname,nick) @
      halt
    }
    elseif ($2 == $hget($sockname,nick)) && ($hget($sockname,host)) {
      if (!$istok(+ -,$left($3,1),32)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :MODE Insufficient parameters you foolish user | halt }
      chgumode $sockname $3-
    }
  halt }
  elseif ($1 == KICK) {
    if (!$3) { cmd.fail $1 | halt }
    if ($left($2,1) != $chr(35)) && ($left($2,1) != $chr(43)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 403 $hget($sockname,nick) $2 :is not a valid channel
    halt }
    if (!$hget($2,$hget($3,1).item)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $3 :No such nick
    halt }
    if (*v* iswmcs $hget($sockname,flags)) { goto skickend }
    if (!$hget($2,$sockname)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 442 $hget($sockname,nick) $2 :You're not on that channel
    halt }
    if (!$hfind($+(+h_,$2),$sockname)) && (!$hfind($+(+o_,$2),$sockname)) && (!$hfind($+(+a_,$2),$sockname)) && (!$hfind($+(+q_,$2),$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) {
      if (!$hget($sockname,ircop)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
      halt }
      if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
      halt }
    }
    if ($hfind($+(+a_,$2),$sockname) && $hfind($+(+q_,$2),$hget($3,1).item)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 972 $hget($sockname,nick) KICK $+(:,$hfind(nicks,$3)) is the channel owner
    halt }
    if ($hfind($+(+o_,$2),$sockname) && $hfind($+(+a_,$2),$hget($3,1).item) || $hfind($+(+q_,$2),$hget($3,1).item)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 972 $hget($sockname,nick) KICK $+(:,$hfind(nicks,$3)) is $iif($hfind($+(+a_,$2),$hget($3,1).item),a channel admin,the channel owner)
    halt }
    if ($hfind($+(+h_,$2),$sockname) && $hfind($+(+o_,$2),$hget($3,1).item) && $hfind($+(+a_,$2),$hget($3,1).item) || $hfind($+(+q_,$2),$hget($3,1).item)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
    halt }
    if ($hfind($+(+O2_,$2),$sockname)) && ($hget($hget($3,1).item,ircop)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
    halt }
    if ($hfind($+(+O2_,$2),$hget($3,1).item)) && (!$hget($sockname,ircop)) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 442 $hget($sockname,nick) $hfind(nicks,$3) :Protected Channel Operator
      sockwrite -n $hget($3,1).item $+(:,$hget(settings,server)) NOTICE $3 :*** Channel Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) tried to kick you off channel $2 $+([,$4-,])
    halt }
    if (q isincs $hget($hget($3,1).item,modes)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 442 $hget($sockname,nick) $hfind(nicks,$3) :Protected IRC Operator
      sockwrite -n $hget($3,1).item $+(:,$hget(settings,server)) NOTICE $3 :*** Server Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) tried to kick you off channel $2 $+([,$4-,])
    halt }
    :skickend
    if ($hget($2,$hget($3,1).item)) { skick $sockname $2- }
  halt }
  elseif ($1 == INVITE) {
    if (!$3) { cmd.fail $1 | halt }
    if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
    if (!$hfind(channels,$3)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $3 :No such channel | halt }
    if (!$hfind($3,$sockname)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 442 $hget($sockname,nick) $3 :You're not on that channel | halt }
    if (*V* iswmcs $hget(modes,$3)) {
      if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) && (!$hfind(+o_ $+ $3,$sockname)) && (!$hfind(+a_ $+ $3,$sockname)) && (!$hfind(+q_ $+ $3,$sockname))  && (!$hfind($+(+O2_,$2),$sockname)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $3 :Don't you miss your @, $+($hget($sockname,nick),?) | halt }
      if (!$hfind(+o_ $+ $3,$sockname)) && (!$hfind(+a_ $+ $3,$sockname)) && (!$hfind(+q_ $+ $3,$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) && (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $3 :Don't you miss your @, $+($hget($sockname,nick),?) | halt } }
    if ($hfind($3,$hget($2,1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 443 $hget($sockname,nick) $2 :is already on channel $3 | halt }
    sockwrite -n $hget($2,1).item : $+ $hget($sockname,host) INVITE $2-3
    sockwrite -n $sockname $+(:,$hget(settings,server)) 341 $hget($sockname,nick) $2-3
    hadd -m $+(invites_,$3) $hget($2,1).item
    if (*N* iswmcs $hget(modes,$3)) {
      var %z = 1
      while $hget($3,%z).item {
        if ($hfind($+(+o_,$3),$hget($3,%z).item)) || ($hfind($+(+a_,$3),$hget($3,%z).item)) || ($hfind($+(+q_,$3),$hget($3,%z).item)) {
          sockwrite -n $hget($3,%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$3) $+(:,$hget($sockname,nick)) invited $2 into the channel.
        }
      inc %z }
    }
  halt }
  elseif ($1 == TOPIC) {
    if (!$2) { cmd.fail $1 | halt }
    if ($left($2,1) != $chr(35)) && ($left($2,1) != $chr(43)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 403 $hget($sockname,nick) $2 :is not a valid channel | halt }
    if (*v* iswmcs $hget($sockname,flags)) { goto stopicend }
    if (!$hget($2,$sockname)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 442 $hget($sockname,host) $2 :You're not on that channel. | halt }
    if (*t* iswmcs $hget(modes,$2)) {
      if (!$hfind($+(+o_,$2),$sockname)) && (!$hfind($+(+a_,$2),$sockname)) && (!$hfind($+(+q_,$2),$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) && (!$hget($sockname,ircop)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?) | halt }
      if ($hget($sockname,ircop)) && (!$hfind($+(+o_,$2),$sockname)) && (!$hfind($+(+a_,$2),$sockname)) && (!$hfind($+(+q_,$2),$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?) | halt }
    }
    :stopicend
    if (!$hfind(topics,$+(topic_,$2))) && (!$3) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 331 $hget($sockname,nick) $2 :No topic is set.
    halt }
    if ($hget(topics,$+(topic_,$2))) && (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) 332 $hget($sockname,nick) $2 : $+ $hget(topics,$+(topic_,$2))
      sockwrite -n $sockname $+(:,$hget(settings,server)) 333 $hget($sockname,nick) $2 $hget(topics,$+(topicsetter_,$2)) $hget(topics,$+(topicdate_,$2))
    halt }
    if ($hget(rchans,$+(topiclock_,$2))) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You can't change the topic on this channel.
    halt }
    if ($len($3-) > $hget(settings,maxtopiclen)) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* The topic you gave for channel $2 was too long. The topic has been shorten.
    }
    var %topic = $iif(:* iswm $3,$left($right($3-,-1),$hget(settings,maxtopiclen)),$left($3,$hget(settings,maxtopiclen)))
    hadd topics $+(topic_,$2) %topic
    hadd topics $+(topicsetter_,$2) $hget($sockname,nick)
    if ($hfind(rchans,$2)) {
      hadd -m rchans $+(lasttopic_,$2) $hget(topics,$+(topic_,$2))
    }
    hadd topics $+(topicdate_,$2) $ctime
    hsave topics data\topics.db
    var %i 1
    while %i <= $hget($2,0).item {
      if ($sock($hget($2,%i).item)) {
      sockwrite -n $hget($2,%i).item : $+ $hget($sockname,host) TOPIC $2 : $+ %topic }
      inc %i
    }
    halt
  }
  elseif ($1 == PRIVMSG) {
    if (!$3) { cmd.fail $1 | halt }
    if ($hget(defcon)) && (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, log in to send privmsg's | halt }
    hdel $sockname idle
    hinc -c $sockname idle
    if ($hget($2,uline)) {
      sockwrite -n $hget($2,socket) $+(:,$hget($sockname,nick)) PRIVMSG $2 $3-
      halt
    }
    var %p = 1
    while %p <= $calc($count($2,$chr(44)) + 1) {
      if ($left($gettok($gettok($2,%p,44),1,32),1) != $chr(35) && $left($gettok($gettok($2,%p,44),1,32),1) != $chr(43)) && (!$hfind(nicks,$gettok($gettok($2,%p,44),1,32))) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :No such nick
      goto privmsgend }
      if ($left($gettok($gettok($2,%p,44),1,32),1) = $chr(35) || $left($gettok($gettok($2,%p,44),1,32),1) = $chr(43)) && (!$hfind(channels,$gettok($gettok($2,%p,44),1,32))) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :No such channel
      goto privmsgend }
      if ($hget($gettok($gettok($2,%p,44),1,32),$sockname) = .i) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :You are invisible on channel $gettok($gettok($2,%p,44),1,32), so please shut up. To undo, type: /INVISIBLE $+(-,$gettok($gettok($2,%p,44),1,32)) | goto privmsgend }
      if ($hfind($+(+z_,$gettok($gettok($2,%p,44),1,32)),$sockname)) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :You cannot speak (+z $hget($sockname,nick) $+ ) | goto privmsgend }
      if (*n* iswmcs $hget(modes,$gettok($gettok($2,%p,44),1,32))) && (!$hfind($gettok($gettok($2,%p,44),1,32),$sockname)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :No external channel messages (+n) ( $+ $gettok($gettok($2,%p,44),1,32) $+ )
      goto privmsgend }
      if (*m* iswmcs $hget(modes,$gettok($gettok($2,%p,44),1,32))) && (!$hfind($+(+v_,$gettok($gettok($2,%p,44),1,32)),$sockname)) && (!$hfind($+(+h_,$gettok($gettok($2,%p,44),1,32)),$sockname)) && (!$hfind($+(+o_,$gettok($gettok($2,%p,44),1,32)),$sockname)) && (!$hfind($+(+a_,$gettok($gettok($2,%p,44),1,32)),$sockname)) && (!$hfind($+(+q_,$gettok($gettok($2,%p,44),1,32)),$sockname)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :Channel is moderator, you need voice (+v) ( $+ $gettok($gettok($2,%p,44),1,32) $+ )
      goto privmsgend }
      if ($hget(msgfprot,$gettok($gettok($2,%p,44),1,32))) { if (%msgs. [ $+ [ $gettok($gettok($2,%p,44),1,32) ] ] >= $gettok($hget(msgfprot,$gettok($gettok($2,%p,44),1,32)),1,32)) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Don't flood! Channel messages are blocked for $gettok($hget(msgfprot,$gettok($gettok($2,%p,44),1,32)),1,32) seconds
        goto privmsgend }
      }
      if ($hget(msgfprot,$gettok($gettok($2,%p,44),1,32))) { inc %msgs. [ $+ [ $gettok($gettok($2,%p,44),1,32) ] ] }
      if (%msgs. [ $+ [ $gettok($gettok($2,%p,44),1,32) ] ] = 1) .timermsgf $+ $gettok($gettok($2,%p,44),1,32) 1 $gettok($hget(msgfprot,$2),1,32) unset %msgs. [ $+ [ $gettok($gettok($2,%p,44),1,32) ] ]
      var %y = 1
      while ($ini(spamfilter.conf,%y)) {
        if (*P* iswmcs $readini(spamfilter.conf,$ini(spamfilter.conf,%y),type)) && ($ini(spamfilter.conf,%y) isin $3-) && ($hget($sockname,ircop) != true) {
          if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = block) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) Message blocked: $readini(spamfilter.conf,$ini(spamfilter.conf,%y),reason)
            sno F *** Spamfilter Blockage -- Spamfilter match by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) in channel $gettok($gettok($2,%p,44),1,32) matching $ini(spamfilter.conf,%y) $+([,$3-])
            inc %x
            goto privmsgend 
          }
          if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = report) {
            sno F *** Spamfilter Report -- Spamfilter match by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) in channel $gettok($gettok($2,%p,44),1,32) matching $ini(spamfilter.conf,%y) $+([,$3-])
            inc %x
          }
          if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = replace) {
            var %x = 1
            while ($hget($gettok($gettok($2,%p,44),1,32),%x).item) {
              if ($hget($gettok($gettok($2,%p,44),1,32),%x).item != $sockname) { if ($sock($hget($gettok($gettok($2,%p,44),1,32),%x).item)) {
                sockwrite -n $hget($gettok($gettok($2,%p,44),1,32),%x).item $+(:,$hget($sockname,host)) PRIVMSG $gettok($gettok($2,%p,44),1,32) $iif(*S* iswmcs $hget(modes,$3),$strip($replace($3-,$ini(spamfilter.conf,%y),<censored>)),$replace($3-,$ini(spamfilter.conf,%y),<censored>)) }
              }
              if ($left($gettok($gettok($2,%p,44),1,32),1) != $chr(35)) && ($hget(away,$hget($gettok($gettok($2,%p,44),1,32),1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 301 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) $hget(away,$hget($gettok($gettok($2,%p,44),1,32),1).item) }
            inc %x }
          goto privmsgend }
        }
        inc %y
      }
      var %x = 1
      while ($hget($gettok($gettok($2,%p,44),1,32),%x).item) {
        if ($left($gettok($gettok($2,%p,44),1,32),1) = $chr(35)) || ($left($gettok($gettok($2,%p,44),1,32),1) = $chr(43)) && ($hget($gettok($gettok($2,%p,44),1,32),%x).item != $sockname) { 
          if ($sock($hget($gettok($gettok($2,%p,44),1,32),%x).item)) { sockwrite -n $hget($gettok($gettok($2,%p,44),1,32),%x).item $+(:,$hget($sockname,host)) PRIVMSG $gettok($gettok($2,%p,44),1,32) $iif(*S* iswmcs $hget(modes,$gettok($gettok($2,%p,44),1,32)),$strip($3-),$3-) }
        }
        if ($left($gettok($gettok($2,%p,44),1,32),1) != $chr(35)) && ($left($gettok($gettok($2,%p,44),1,32),1) != $chr(43)) {
          if ($sock($hget($gettok($gettok($2,%p,44),1,32),%x).item)) { sockwrite -n $hget($gettok($gettok($2,%p,44),1,32),%x).item $+(:,$hget($sockname,host)) PRIVMSG $gettok($gettok($2,%p,44),1,32) $iif(*S* iswmcs $hget($hget($2,1).item,modes),$strip($3-),$3-) }
          if ($hget(away,$hget($gettok($gettok($2,%p,44),1,32),1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 301 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) $hget(away,$hget($gettok($gettok($2,%p,44),1,32),1).item) }
        }
      inc %x }
      :privmsgend
      sno i *** Idle Notice -- The idle of $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) has been reset (/PRIVMSG $gettok($gettok($2,%p,44),1,32) $+ )
      inc %p
    }
    halt
  }
  elseif ($1 == WHOWAS) {
    if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) 431 $hget($sockname,nick) :No nickname given
      halt
    }
    if (!$hget(whowas_ $+ $2)) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :There was no such nick
      sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :is addicted to teh real world
      sockwrite -n $sockname $+(:,$hget(settings,server)) 369 $hget($sockname,nick) $2 :End of WHOWAS
      halt
    }
    else {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 314 $hget($sockname,nick) $2 $+(:,$gettok($hget($+(whowas_,$2),host),2,33)) * $hget($+(whowas_,$2),realname)
      if ($hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 378 $hget($sockname,nick) $2 :connected from $+(*@,$hget($+(whowas_,$2),realhost)) $hget($+(whowas_,$2),ip) }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 312 $hget($sockname,nick) $2 $hget(settings,server) $+(:,$asctime($hget($+(whowas_,$2),date)))
      sockwrite -n $sockname $+(:,$hget(settings,server)) 369 $hget($sockname,nick) $2 :End of WHOWAS
    halt }
  }
  elseif ($1 == SWHOIS) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if ($hget($sockname,olvl) < 5) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    halt }
    if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) 431 $hget($sockname,nick) :No nickname given
      halt
    }
    if (!$sock($sockname)) { halt }
    if (!$hfind(nicks,$2)) || (!$hget($2,1).item) || (*w* iswmcs $hget($hget($2,1).item,modes)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick
      sockwrite -n $sockname $+(:,$hget(settings,server)) 320 $hget($sockname,nick) $2 :is somewhere in real life
      sockwrite -n $sockname $+(:,$hget(settings,server)) 318 $hget($sockname,nick) $2 :End of WHOIS
      halt
    }
    else {
      if (!$3) {
        hdel $hget($2,1).item swhois
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :SWHOIS of $hfind(nicks,$2) has been unset
        halt
      }
      else {
        hadd $hget($2,1).item swhois $3-
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :SWHOIS of $hfind(nicks,$2) has set to: $hget($hget($2,1).item,swhois)
      }
    }
  }
  elseif ($1 == WHOIS) {
    if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) 431 $hget($sockname,nick) :No nickname given
      halt
    }
    if (!$sock($sockname)) { halt }
    if (!$hfind(nicks,$2)) || (!$hget($2,1).item) || (*w* iswmcs $hget($hget($2,1).item,modes)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick
      sockwrite -n $sockname $+(:,$hget(settings,server)) 320 $hget($sockname,nick) $2 :is somewhere in real life
      sockwrite -n $sockname $+(:,$hget(settings,server)) 318 $hget($sockname,nick) $2 :End of WHOIS
      halt
    }
    if ($hfind($2,uline)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 311 $hget($sockname,nick) $2 $hget($hget($2,socket),ident) $hget($hget($2,socket),host) * $hget($hget($2,socket),realname)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $2 :is a Network Service
      sockwrite -n $sockname $+(:,$hget(settings,server)) 318 $hget($sockname,nick) $2 : $+ End of /WHOIS $iif($2 = $hget(enforcer,nick),list.. found what you where looking for? = $+ $chr(41))
      halt
    }
    if ($hget($hget($2,1).item,level) = uline) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 311 $hget($sockname,nick) $2 : $+ $gettok($hget($hget($2,1).item,host),2,33) * $hget($hget($2,1).item,realname)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 312 $hget($sockname,nick) $2 : $+ $hget($hget($2,1).item,server) $hget($hget($2,1).item,serverdesc)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 318 $hget($sockname,nick) $2 : $+ End of /WHOIS $iif($2 = $hget(enforcer,nick),list.. found what you where looking for? = $+ $chr(41))
      halt
    }
    if (*W* iswmcs $hget($hget($2,1).item,modes)) && ($hget($2,1).item != $sockname) {
      sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $hfind(nicks,$2) :*** Server Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) did a /WHOIS on you.
    }
    sockwrite -n $sockname $+(:,$hget(settings,server)) 311 $hget($sockname,nick) $hfind(nicks,$2) $gettok($gettok($hget($hget($hget($2,1).item),host),2,33),1,64) $gettok($gettok($hget($hget($hget($2,1).item),host),2,33),2,64) * $+(:,$hget($hget($2,1).item,realname))
    if ($hget($sockname,ircop)) || ($2 = $hget($sockname,nick)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 379 $hget($sockname,nick) $hfind(nicks,$2) using modes: $iif($hget($hget($2,1).item,hop),$removecs($hget($hget($2,1).item,modes),o,X,Z,c,h,q,s,v,I,W,H),$hget($hget($2,1).item,modes)) $iif(!$hget($hget($2,1).item,hop),$hget($hget($2,1).item,snomasks)) }
    if (!$hget($hget($2,1).item,hop)) {
      if ($hget($sockname,ircop)) && ($hget($hget($2,1).item,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 382 $hget($sockname,nick) $hfind(nicks,$2) using operflags: $hget($hget($2,1).item,flags) }
    }
    if ($hget($sockname,ircop)) || ($2 = $hget($sockname,nick)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 378 $hget($sockname,nick) $hfind(nicks,$2) :connecting from $+($iif($hget(settings,idwithrealhost),$hget($hget($2,1).item,ident),*),@,$gettok($hget($hget($2,1).item,realhost),2,64)) $sock($hget($2,1).item).ip }
    if (*r* iswmcs $hget($hget($2,1).item,modes)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 307 $hget($sockname,nick) $hfind(nicks,$2) :is logged in as $hget($hget($2,1).item,loggedin) }
    if (*c* !iswmcs $hget($hget($2,1).item,modes)) && ($2 != $hget($sockname,nick)) || ($hget($sockname,ircop)) {
      var %i 1, %chans, %amount 0
      while %i <= $hget(channels,0).item {
        if ($hget($hget(channels,%i).item,$hget($2,1).item)) {
          if ($hget($hget(channels,%i).item,$hget($2,1).item) == .i) && ($hget($sockname,olvl) >= 5) {
            var %chans = %chans $+(!,$hget(channels,%i).item)
            inc %amount
          }
          if (*s* !iswmcs $hget(modes,$hget(channels,%i).item)) && ($hget($hget(channels,%i).item,$hget($2,1).item) !== .i) {
            set %chans %chans $+($iif(*c* iswmcs $hget(modes,$hget($2,1).item),?),$gettok($hget($hget(channels,%i).item,$hget($2,1).item),1,46),$hget(channels,%i).item))
            if ($hget($sockname,ircop)) && ($hget($hget(channels,%i).item,$hget($2,1).item) == .i) { set %chans %chans $+($iif(*c* iswmcs $hget(modes,$hget($2,1).item),?),$gettok($hget($hget(channels,%i).item,$hget($2,1).item),1,46),$hget(channels,%i).item)) } 
            inc %amount
          }
        }
        if ($len(%chans) >= 450) { sockwrite -n $sockname $+(:,$hget(settings,server)) 319 $hget($sockname,nick) $hfind(nicks,$2) $+(:,%chans) | var %chans }
        inc %i
      }
      if (%chans) { sockwrite -n $sockname $+(:,$hget(settings,server)) 319 $hget($sockname,nick) $hfind(nicks,$2) $+(:,%chans) }
    }
    sockwrite -n $sockname $+(:,$hget(settings,server)) 312 $hget($sockname,nick) $hfind(nicks,$2) $+(:,$hget($hget($2,1).item,server)) $hget($hget($2,1).item,serverdesc)
    if ($hget(away,$hget($2,1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 301 $hget($sockname,nick) $hfind(nicks,$2) $hget(away,$hget($2,1).item) }
    if (*H* !iswmcs $hget($hget($2,1).item,modes)) {
      if (*X* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is an IRC Administrator | goto e }
      if (*N* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Network Administrator | goto e }
      if (*T* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Technical Administrator | goto e }
      if (*A* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Server Administrator | goto e }
      if (*C* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Co Administrator | goto e }
      if (*o* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is an IRC Operator | goto e }
      if (*O* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Local Operator | goto e }
      if (*h* iswmcs $hget($hget($2,1).item,modes)) && (!$hget($hget($2,1).item,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is an Help Operator | goto e }
      :e
      if (*Z* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Services Root Administrator | goto e2 }
      if (*a* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Services Administrator | goto e2 }
      if (*P* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Services Operator | goto e2 }
      :e2
      if (*h* iswmcs $hget($hget($2,1).item,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) 310 $hget($sockname,nick) $hfind(nicks,$2) :is a available for help
      if (*q* iswmcs $hget($hget($2,1).item,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) 320 $hget($sockname,nick) $hfind(nicks,$2) :is protected on all channels
    }
    if ($hget($hget($2,1).item,swhois)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 320 $hget($sockname,nick) $hfind(nicks,$2) $+(:,$hget($hget($2,1).item,swhois)) }
    if ($hget($hget($2,1).item,ologin)) && ($hget($sockname,ircop) = true) { sockwrite -n $sockname $+(:,$hget(settings,server)) 325 $hget($sockname,nick) $hfind(nicks,$2) using oper account: $hget($hget($2,1).item,ologin) }
    if ($crc($md5($sock($hget($2,1).item).ip),0) = 82A88AE5) sockwrite -n $sockname $+(:,$hget(settings,server)) 320 $hget($sockname,nick) $hfind(nicks,$2) :connected via Provision Debugging PC
    sockwrite -n $sockname $+(:,$hget(settings,server)) 317 $hget($sockname,nick) $hfind(nicks,$2) $hget($hget($2,1).item,idle) $hget($hget($2,1).item,signon) seconds idle, signon time
    sockwrite -n $sockname $+(:,$hget(settings,server)) 318 $hget($sockname,nick) $hfind(nicks,$2) :End of /WHOIS
  halt }
  elseif ($1 == AWAY) {
    if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) 305 $hget($sockname,nick) :You are no longer marked as being away.
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Hi dude/babe, welcome back eh! ^.^/ How was your journey IRL?
    if ($hget(away,$sockname)) { hdel away $sockname } }
    else { sockwrite -n $sockname $+(:,$hget(settings,server)) 306 $hget($sockname,nick) :You have been marked as being away so get your ass away from here~!! o.0; | hadd away $sockname $2- }
  halt }
  elseif ($1 == LIST) {
    if ($2 == stop) { .timerlist. [ $+ [ $sockname ] ] off | sockwrite -n $sockname $+(:,$hget(settings,server)) 323 $hget($sockname,nick) :End of /LIST | halt }
    var %list. [ $+ [ $sockname ] ] = 0
    sockwrite -n $sockname $+(:,$hget(settings,server)) 321 $hget($sockname,nick) Channel :Users Name
    .timerlist. [ $+ [ $sockname ] ] -m 0 0 list $sockname
  halt }
  elseif ($1 == WHO) {
    if ($2) {
      var %i 1
      while (%i <= $hget($2,0).item) {
        if (*i* iswmcs $hget($hget($2,%i).item,modes) && $hget($sockname,ircop) != true) { inc %i }
        var %mds = $hget($hget($2,%i).item,modes)
        if ($hget($hget($2,%i).item,nick)) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) 352 $hget($sockname,nick) $2 $gettok($gettok($hget($hget($2,%i).item,$iif($hget($sockname,ircop),realhost,host)),1,64),2,33) $gettok($hget($hget($2,%i).item,host),2,64) $hget(settings,server) $hget($hget($2,%i).item,nick) $whomasks($hget($2,%i).item,$2) :0 $hget($hget($2,%i).item,realname) 
        }
      inc %i }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 315 $hget($sockname,nick) $2 :End of /WHO list.
    halt }
    else {

      var %u 1
      while (%u <= $hget(users,0).item) {
        if (*i* iswmcs $hget($hget(users,%u).item,modes)) && $hget($sockname,ircop) != true) { inc %a }
        sockwrite -n $sockname $+(:,$hget(settings,server)) 352 $hget($sockname,nick) * $hget($hget(users,%u).item,ident) $gettok($hget($hget(users,%u).item,$iif($hget($sockname,ircop),realhost,host)),2,64) $hget(settings,server) $hget($hget(users,%u).item,nick) $whomasks($hget(users,%u).item) :0 $hget($hget(users,%u).item,realname)
        var %a 1

        while (%a <= $hget(channels,0).item) {
          if (!$hget($hget(channels,%a).item,$sockname)) && (*v* !iswmcs $hget($sockname,flags)) { inc %a | continue }
          var %b 1
          while %b <= $hget($hget(channels,%a).item,0).item {
            var %mds = $right($hget($hget($hget(channels,%a).item,%b).item,modes),-1)
            if ($hget($hget($hget(channels,%a).item,%b).item,host)) {
              sockwrite -n $sockname $+(:,$hget(settings,server)) 352 $hget($sockname,nick) $hget(channels,%a).item $gettok($gettok($hget($hget($hget(channels,%a).item,%b).item,host),1,64),2,33) $gettok($hget($hget($hget(channels,%a).item,%b).item,$iif($hget($sockname,ircop),realhost,host)),2,64) $hget(settings,server) $hget($hget($hget(channels,%a).item,%b).item,nick) $whomasks($hget($hget($hget($hget(channels,%a).item,%b).item,nick),1).item,$2) :0 $hget($hget($hget(channels,%a).item,%b).item,realname)
            }
          inc %b }
          inc %a
        }
        inc %u
      }
    }
    sockwrite -n $sockname $+(:,$hget(settings,server)) 315 $hget($sockname,nick) * :End of /WHO list.
  halt }
  elseif ($1 == LUSERS) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 251 $hget($sockname,nick) :There are $calc($hget(users,0).item + $hget(gusers,0).item) $+(user,$iif($calc($hget(users,0).item + $hget(gusers,0).item) != 1,s)) on $hget(servers,0).item $+(server,$iif($hget(servers,0).item != 1,s))
    sockwrite -n $sockname $+(:,$hget(settings,server)) 252 $hget($sockname,nick) $+(:,$hget(ircops,0).item) IRC $+(Operator,$iif($hget(ircops,0).item != 1,s)) online
    sockwrite -n $sockname $+(:,$hget(settings,server)) 254 $hget($sockname,nick) $+(:,$hget(channels,0).item) $+(channel,$iif($hget(channels,0).item != 1,s)) in use
    sockwrite -n $sockname $+(:,$hget(settings,server)) 255 $hget($sockname,nick) :I have $hget(users,0).item $+(client,$iif($hget(users,0).item != 1,s)) and $hget(servers,0).item $+(server,$iif($hget(servers,0).item != 1,s))
    sockwrite -n $sockname $+(:,$hget(settings,server)) 265 $hget($sockname,nick) $+(:,$hget(users,0).item) $+(user,$iif($hget(users,0).item != 1,s)) on this server. Max: $hget(data,maxloc)
    sockwrite -n $sockname $+(:,$hget(settings,server)) 266 $hget($sockname,nick) $+(:,$calc($hget(users,0).item + $hget(gusers,0).item)) $+(user,$iif($calc($hget(users,0).item + $hget(gusers,0).item) != 1,s)) on entire network. Max: $hget(data,maxglob)
  halt }
  elseif ($1 == VERSION) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) 351 $hget($sockname,nick) ProvisionIRCd $vrs $hget(settings,server)
    sockwrite -n $sockname $+(:,$hget(settings,server)) 005 $hget($sockname,nick) $+(CMDS=,$cmds) MAXLIST=b:100,e:100,I:100 $+(NICKLEN=,$hget(settings,maxnicklen)) $+(CHANNELLEN=,$hget(settings,maxchanlen)) $+(TOPICLEN=,$hget(settings,maxtopiclen)) are supported by $hget(settings,serverdesc)
    sockwrite -n $sockname $+(:,$hget(settings,server)) 005 $hget($sockname,nick) SILENCE=15 MODES=15 $+(CHANTYPES=,$chtypes) $+(PREFIX=,$iprefix) $+(CHANMODES=,$chmodes) $+(NETWORK=,$hget(settings,serverdesc)) ELIST=MNUCT $+(STATUSMSG=,$statusmsg) EXCEPTS INVEX are supported by $hget(settings,serverdesc)
  halt }
  elseif ($1 == CREDITS) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :ProvisionIRCd $vrs
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Is brought to you by:
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Sirius - Project Head Developer
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Special thanks goes to;
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-=-=-=-=-=- Websites -=-=-=-=-=-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :http://www.mircscripts.org - For adding this IRCd in the download database
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-=-=-=-=-=- People -=-=-=-=-=-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :poiuy_qwert - Who helped me at the start
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Nickyboy - For testing this IRCd on his server
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :D4v3 - For flooding this IRCd which made it more stable
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Romain - For hosting this IRCd
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :We're still looking for people who voluntary wants to
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :join the ProvisionIRCd staff to make it better then ever!
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :You can contact me at http://provision.dogmatix.net
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Also, you can use that URL to post any bugs or features
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :you find/want for ProvisionIRCd.
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :ProvisionIRCd is a free software to run an IRC Deamon which
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :allows you to open an IRC Server on your local network.
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Please note that this software is still under construction,
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :so please register on http://provision.dogmatix.net and report all bugs
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :and/or features you want for ProvisionIRCd.
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Birth date: 14/03/2006, somewhere in the evening...
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :On-line since: $hget(data,sut)
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :End of /CREDITS command.
    sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
  }
  elseif ($1 = IRCDHELP) || ($1 = HELP) || ($1 = HELPOP) {
    if (!$2) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :This section shows you some information about this
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :IRCd and her commands. For a more detailed description
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :on a specify subject, use following commands:
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP UMODES - View all usermodes
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP CHMODES - View all modes for your channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP SNOMASKS - View all available snomasks 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP OFLAGS - Shows all oper flags 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP OPERCMDS - Shows list of commands for IRC Ops.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP USERCMDS - Lists all commands available for all users
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP CHANCMDS - Lists commands to configure your channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP NICKCMDS - Lists commands to configure your nickname
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP CHANGES - If file exists, shows Changes.txt
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP SPAMFILTER - Sends information about the spamfilter
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :For some human help please join $hget(settings,helpchan)
    halt }
    if ($2 = UMODES) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Usermodes:
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :X = IRC Administrator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :N = Network Administrator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :T = Technical Administrator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :A = Server Administrator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :C = Co Administrator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :o = IRC Operator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :O = Local Operator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Z = Services Root Administrator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :a = Services Administrator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :P = Services Operator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :c = Hide all channels in /WHOIS
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :h = Is available for help (HelpOp)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :i = Invisible (not shown in /WHO)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :q = Cannot be kicked off the channel (+o)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :r = Identifies the nick as being logged in
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :s = Can listen to server notices (+o)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :w = Makes you hidden on the server (+o)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :x = Hide real hostname in /WHOIS and /WHO
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :H = Hide IRCop status on the server (+o)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :I = See when people doing an /INFO on you (+o)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :S = Strips color codes in messages and notices
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :W = See when people doing a /WHOIS on you (+o)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
    halt }
    if ($2 = SNOMASKS) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Snomasks:
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :a - Can see Services Admin commands usage (/SA*)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :c - Can read connect/disconnect notices
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :f - See flood alerts
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :g - Global notices
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :i - Can see idle breakes (nick = optional)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :j - View /join and /part uses
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :k - View kill notices
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :n - Other notices
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :o - View oper up notices
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :s - General server notices
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :w - Read wallops massages
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :A - See aleatory connections
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :C - View clone alerts
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :F - View spamfilter matches
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :I - Can view /invisible uses
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :N - Can read nick changes
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Q - View sqline rejections
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :S - Can read "spy" notices
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Snomasks are server notice masks, it's a special type of usermode
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :that controls which server notices you will receive (mostly used by opers)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :It can be set by: /mode yournick +s -/+SNOMASK, for example: /mode yournick +s +cf
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :To remove certain snomasks, use something like: /mode yournick +s -c
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
    halt }
    if ($2 = OFLAGS) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Operflags:
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :e = Oper can add and remove elines
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :j = Oper can use /jump
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :k = Oper can use /kill
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :s = Access /sajoin, /sapart and /sanick
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :v = Can use override
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :q = Can use /sqline and /unsqline
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :r = Access to /rehash
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :z = Oper can add and remove zlines
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :D = Access to /die
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :E = Can use /addoper and /deloper
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :I = Can use /invisible
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :K = Oper can add and remove klines and shuns
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :R = Access to /restart
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :S = Access to /*set commands
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :T = Can use /trace
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Above flags will tell you which permissions you got
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :on the server.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Operflags can't be given/removed while connected.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
    halt }
    if ($2 = CHMODES) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Channelmodes:
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :b <nick!ident@host> - Bans the given hostmask from the channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :e <nick!ident@host> - Users matching an except can go through channel bans
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :I <nick!ident@host> - Matching users can go through channel mode +i
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :z <nickname> - Users matching a 'Zilence' are not able to speak on the channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :O <nickname> - Give/take override and protected status (IRCops only)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :q <nickname> - Give/take Channel owner status
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :a <nickname> - Give/take Channel admin status
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :o <nickname> - Give/take Channel operator status
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :h <nickname> - Give/take Halfop status
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :v <nickname> - Give/take Voice
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :f [amount:type:secs] - Set flood protect. Type can be join, msg, Notice and nickchange
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :k [key] - User must give a key in order to join the channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :l [number] - Maximal users of [number] allowed in the channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :i - You must be invited to join the channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :m - Channel is moderated (only +v or above can speak)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :n - Users from outside the channel can not send messages
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :p - Channel is private (no-one can join)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :t - Only ops can change topic
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :s - Channel is secret (not shown in /whois and /list)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :N - Receive channel notices
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :O - Only IRC Operators can join the channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :R - You must be logged in to join the channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :S - Strips color codes in messages and notices
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :V - Only channel ops can invite to the channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
    halt }
    if ($2 = OPERCMDS) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Oper commands:
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/CLONES - Shows all clones on the server
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/DIE [pass] - Shutdowns the IRCd
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ELINE +expire ident@host <reason>
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Users matching an Exception-line are able to go through Kill-lines.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Expire must be numeric. Example: +60 (is 1 hour (60 minutes))
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/INVISIBLE #Channel|-#Channel - Used to be invisible on a channel.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/JUMP <nick> <server> [port] - Redirect given user to given server.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/KILL <nick> [reason] - Forcefully disconnect a user from the server
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/KLINE +expire ident@host <reason>
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Users matching a Kill-line are not able to connect to the server.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Expire must be numeric. Example: +60 (is 1 hour (60 minutes))
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ZLINE +expire <ipaddress> <reason> - Same as KLINE, but for IP addresses
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SQLINE <nick> [reason] - Bans a certain nickname on the server
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/UNSQLINE <nick> - Removes the given Q:Line
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SHUN +expire ident@host <reason>
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Users matching a Shun cannot perform any command, except
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :for /ADMIN, /PART and /QUIT.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/REHASH - Reloads IRCd configuration
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/RESTART [pass] - Restarts the IRCd
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SAJOIN <nick> #Channel - Forces user to join the given channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SAPART <nick> #Channel - Forces user to part the given channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SANICK <nick> <newnick> - Forces user to change his/her nickname
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SMSG <nick> [text] - Sends numeric raw to socket with [text]
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SWHOIS <nick> [text] - Adds or remove extra line to /WHOIS
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ADDOPER <username> <password> <ident@host> <modes> <snomasks> <flags> - Adds IRC Operator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/DELOPER <username> - Removes IRC Operator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/TRACE <nick> - View information for given user
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/WALLOPS [text] - Sends WALLOPS message to the server.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SERVSET help - Various server settings
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
    halt }
    if ($2 = USERCMDS) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :User commands:
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/REGISTER #Channel|<username> [pass] <email> [desc] - Registers a username or channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/LOGIN <username> [pass] - Makes the IRCd recognize you
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ADMIN - Administrative information about the server
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/AWAY [reason] - Sets or unsets your away status
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/CHANSET <option> [parameters] - Apply channel settings. Try: /CHANSET HELP
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/CREDITS - Lists the Credits to all the people who helped us
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/INVITE <nick> <#Channel> - Invite given user to join the channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP [chapter] - Shows this, ha!
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCOPS - Lists all online IRC Operators
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ISON <nick> - Check if user's online
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ISOPER <nick> - Check if user is an Operator
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/JOIN #Channel [key] - Joins the given channel (key = optional)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/KICK #Channel <nick> [reason] - Kicks given user from the channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/LUSERS - Shows server status
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/MODE #Channel|<yournick> <modes> [params] - Sets <modes> with [params] 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/MOTD - Displays Message of the Day
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/NAMES #Channel - Provides a list of users on the specified channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/NICK <newnick> - Change your current nickname
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/NICKSET <option> [parameters] - Apply nickname settings. Try: /NICKSET HELP
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/NOTICE #Channel|<nick> [text] - Sends text notice to channel/nickname
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/OPER [username] [pass] - Grant IRC Operator privileges
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/PART #Channel [text] - Parts the given channel (text = optional)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/PING - Check for presence of connection activity
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/PONG - Reply to PING request
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/PRIVMSG <#Channel|nick> [text] - Sends text message to channel/nickname
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/QUIT [reason] - Disconnect from the IRC Server
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SETNAME [realname] - Change your "realname"
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/STATS [stat] - Sends stats block viewing given stats
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/TIME - Returns current date and time
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/TOPIC #Channel [text] - Set/remove channel topic
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/USER [parameters...] - Used to identity your connection
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/USERHOST <nick> - View user's hostmask
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/VERSION - Displays IRCd name and version
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/WHOIS <nick> - Displays information for given nickname
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/WHOWAS <nick> - Displays information for given nicknames
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/WHO #Channel - Indicate different information about the user 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
    halt }
    if ($2 = CHANCMDS) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Channel commands:
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/REGISTER #Channel [pass] <email> [desc]
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Password must be 5 characters or over, and the e-mail address
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :has to be valid.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/DROP #Channel
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Drops the given channel. You must be logged in as the
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :founder to drop the channel.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ACCESS #Channel ADD|DEL|LIST [username] [level]
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Maintains the access list for a channel, which allows you to
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :control channel admin and operator levels.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/AKICK #Channel ADD|DEL|LIST <nick!ident@hostmask> [reason]
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Modify the auto-kick list for a channel. Users matching an
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :auto-kick, will automaticly be banned from the channel.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/CHANSET help - Various channel settings
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
    halt }
    if ($2 = NICKCMDS) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Nickname commands:
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/REGISTER <username> [pass] <email>
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Password must be 5 characters or over, and the e-mail address
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :has to be valid.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/DROP <username> [pass] - Drops the given username
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/LOGIN <username> [pass] - Makes the IRCd recognize you as <username>
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/NICKSET help - Various nickname settings
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
    halt }
    if ($2 = CHANGES) {
      if (!$exists(Changes.txt)) || ($lines(Changes.txt) = 0) { sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Changes.txt File is missing | halt }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Changes $vrs ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      var %i 1
      while %i <= $lines(changes.txt) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 372 $hget($sockname,nick) $+(:-,$read(changes.txt,%i))
        if (!$read(changes.txt,%i)) { inc %stop }
        if (%stop >= 8) { unset %stop | halt }
      inc %i }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :
    halt }
    else {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~ 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Topic $+(,$upper($2),) not found.
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Please try $+(/,$1)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
    halt }
    halt 
  }
  elseif ($1 == STATS) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if ($hget($sockname,olvl) < 1) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    halt }
    if (!$2) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :/Stats flags:
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :c - Displays how many times a command is performed
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :e - View exceptions block
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :k - Send K:Line list
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :o - Send the oper block list
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :p - View blocking proxies
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :q - Send Q:Line list
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :s - Send Shun list
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :u - View server uptime
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :v - Send vHost block
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :z - Send Z:Line list
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :S - View IRCd stats
      sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :C - View configuration settings
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) * End of /STATS report
    halt }
    if (!$istokcs(c e k o p q s u v z C S,$2,32)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* STATS -- Unknown stats " $+ $2 $+ " | halt }
    elseif ($2 === c) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) USER: $hget(cmds,user)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) USERHOST: $hget(cmds,userhost)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) NICK: $hget(cmds,nick)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) JOIN: $hget(cmds,join)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) PART: $hget(cmds,part)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) MODE: $hget(cmds,mode)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) LIST: $hget(cmds,list)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) WHOIS: $hget(cmds,whois)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) WHOWAS: $hget(cmds,whowas)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) CONNECT: $hget(cmds,connect)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) PASS: $hget(cmds,pass)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) LINK: $hget(cmds,link)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) STATS: $hget(cmds,stats)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) OPER: $hget(cmds,oper)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) LUSERS: $hget(cmds,lusers)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) VERSION: $hget(cmds,version)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) ADMIN: $hget(cmds,admin)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) MOTD: $hget(cmds,motd)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) TOPIC: $hget(cmds,topic)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) QUIT: $hget(cmds,quit)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) SQUIT: $hget(cmds,squit)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) AWAY: $hget(cmds,away)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) IRCOPS: $hget(cmds,ircops)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) ISON: $hget(cmds,ison)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) IRCDHELP: $hget(cmds,ircdhelp)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) CREDITS: $hget(cmds,credits)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) SMSG: $hget(cmds,smsg)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) TIME: $hget(cmds,time)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) TRACE: $hget(cmds,trace)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) NOTICE: $hget(cmds,notice)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) PRIVMSG: $hget(cmds,privmsg)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) PING: $hget(cmds,ping)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) PONG: $hget(cmds,pong)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) o End of /STATS report
    }
    elseif ($2 === e) {
      var %x = 1
      while $hget(elines,%x).item { if ($chr(95) !isin $hget(elines,%x).item) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) e $hget(elines,%x).item * $hget(elines,nick_ $+ $hget(elines,%x).item) [Active: $+($duration($calc($ctime - $ctime($hget(elines,$+(date_,$hget(elines,%x).item))))),]) Set on $hget(elines,$+(date_,$hget(elines,%x).item)) $+([,$hget(elines,$+(reason_,$hget(elines,%x).item)),]) }
      inc %x }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) e End of /STATS report
    }
    elseif ($2 === k) {
      var %x = 1
      while $hget(klines,%x).item { if ($chr(95) !isin $hget(klines,%x).item) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) K $hget(klines,%x).item * $hget(klines,nick_ $+ $hget(klines,%x).item) [Active: $+($duration($calc($ctime - $ctime($hget(klines,$+(date_,$hget(klines,%x).item))))),]) Set on $hget(klines,$+(date_,$hget(klines,%x).item)) $+([,$hget(klines,$+(reason_,$hget(klines,%x).item)),]) }
      inc %x }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) k End of /STATS report
    }
    elseif ($2 === s) {
      var %x = 1
      while $hget(shuns,%x).item { if ($chr(95) !isin $hget(shuns,%x).item) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) S $hget(shuns,%x).item * $hget(shuns,nick_ $+ $hget(shuns,%x).item) [Active: $+($duration($calc($ctime - $ctime($hget(shuns,$+(date_,$hget(shuns,%x).item))))),]) Set on $hget(shuns,$+(date_,$hget(shuns,%x).item)) $+([,$hget(shuns,$+(reason_,$hget(shuns,%x).item)),]) }
      inc %x }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) s End of /STATS report
    }
    elseif ($2 === o) {
      var %x = 1
      while $ini(opers.conf,%x) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) $readini(opers.conf,$ini(opers.conf,%x),host) * $ini(opers.conf,%x) $readini(opers.conf,$ini(opers.conf,%x),flags) [clients]
      inc %x }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) o End of /STATS report
    }
    elseif ($2 === p) {
      var %x = 1
      while ($hget(proxies,%x).item) {
        if ($chr(95) !isin $hget(proxies,%x).item) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) P $hget(proxies,%x).item * $hget(proxies,nick_ $+ $hget(proxies,%x).item) [Active: $+($duration($calc($ctime - $ctime($hget(proxies,$+(date_,$hget(proxies,%x).item))))),]) Set on $hget(proxies,$+(date_,$hget(proxies,%x).item)) $+([,$hget(proxies,$+(reason_,$hget(proxies,%x).item)),]) }
      inc %x }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) p End of /STATS report
    }
    elseif ($2 === q) {
      var %x = 1
      while $hget(sqline,%x).item { if ($chr(95) !isin $hget(sqline,%x).item) {
          var %qnick = $gettok($hget(sqline,%x).item,1,32)
        sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Q %qnick * $gettok($hget(sqline,%qnick),2,32) [Active: $+($duration($calc($ctime - $ctime($gettok($hget(sqline,%qnick),2,32)))),]) Set on $gettok($hget(sqline,%qnick),2,32) $+([,$gettok($hget(sqline,%qnick),3-,32),]) }
      inc %x }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) q End of /STATS report
    }
    elseif ($2 === C) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) *** Configuration Settings ***
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Server info: $hget(settings,server) $hget(settings,serverdesc)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Port: $hget(settings,port)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) IRC Admin host: $readini(ircd.conf,operhosts,ircadmin)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Network Admin host: $readini(ircd.conf,operhosts,netadmin)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Technical Admin host: $readini(ircd.conf,operhosts,techadmin)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Server Admin host: $readini(ircd.conf,operhosts,serveradmin)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Co Admin host: $readini(ircd.conf,operhosts,coadmin)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Services Root host: $readini(ircd.conf,operhosts,servicesrootadmin)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Services Admin host: $readini(ircd.conf,operhosts,servicesadmin)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Services Oper host: $readini(ircd.conf,operhosts,servicesoper)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) IRC Operator host: $readini(ircd.conf,operhosts,globop)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Local IRCop host: $readini(ircd.conf,operhosts,locop)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Modes on connect: $readini(ircd.conf,settings,modesonconnect)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Modes on join: $readini(ircd.conf,settings,modesonjoin)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Quit prefix: $readini(ircd.conf,settings,quitprefix)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) -
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) *** Security block ***
      if ($hget(settings,password)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Password: $hget(settings,password) }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Proxyscan: $iif($hget(settings,proxyscan),Yes,No)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Block alea: $iif($hget(settings,blockalea),Yes,No)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) s End of /STATS report
    }
    elseif ($2 === u) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :- | sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :Server up: $uptime(mirc,1)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :- | sockwrite -n $sockname $+(:,$hget(settings,server)) 2250 $hget($sockname,nick) :Highest connection count: $hget(data,maxloc) ( $+ $hget(data,maxglob) clients)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :- | sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) u End of /STATS report
    }
    elseif ($2 === v) {
      var %x = 1
      while $ini(vhost.conf,%x) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) $ini(vhost.conf,%x) * $readini(vhost.conf,$ini(vhost.conf,%x),vhost) [clients]
      inc %x }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) v End of /STATS report
    }
    elseif ($2 === z) {
      var %x = 1
      while $hget(zlines,%x).item { if ($chr(95) !isin $hget(zlines,%x).item) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) z $hget(zlines,%x).item * $hget(zlines,nick_ $+ $hget(zlines,%x).item) [Active: $+($duration($calc($ctime - $ctime($hget(zlines,$+(date_,$hget(zlines,%x).item))))),]) Set on $hget(zlines,$+(date_,$hget(zlines,%x).item)) $+([,$hget(zlines,$+(reason_,$hget(zlines,%x).item)),]) }
      inc %x }
      sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) z End of /STATS report
    }
    elseif ($2 === S) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :Total connection count: $hget(data,connects)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :Total disconnect count: $hget(data,disconnects)
      if ($hget(data,disconnects) < $hget(data,connects)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* STATS -- You are doing well. DISCONNECTS < CONNECTS
      if ($hget(data,disconnects) > $hget(data,connects)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* STATS -- You are doing po0r~!!1 DISCONNECTS > CONNECTS
      sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :Total sockreads: $hget(data,sockreads)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) i End of /STATS report }
    sno n *** Global Notice -- Stats " $+ $2 $+ " requested by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ )
  halt }
  elseif ($1 == LOGIN) {
    if (!$3) { cmd.fail $1 | return }
    if (!$hfind(rnicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :LOGIN: Username not found | return }
    if ($hget(rnicks,$+(secure_,$2)) = true) && ($sock($sockname).ip != $hget(rnicks,$+(ip_,$2))) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $2 :Login failed; This nicknamed is IP secured.
    return }
    if ($3 !=== $hget(rnicks,$+(pass_,$2))) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Incorrect password | return }
    if ($hget($sockname,loggedin) = $2) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You are already logged in as $2 | return }
    if ($hget($sockname,loggedin)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You are already logged in as $hget($sockname,loggedin) | return }
    hadd $sockname loggedin $2
    hadd -m onirc $2 $sockname
    hadd -m rnicks $+(rname_,$2) $hget($sockname,realname)
    hadd -m rnicks $+(lastseen_,$2) $fulldate
    .timerchgnick $+ $sockname off
    .timersqline $+ $sockname off
    hdel sqline $2
    .timerunsqline1 $+ $2 off
    chgumode $sockname +r 0 $hget(settings,server)
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You are now logged in as:  $+ $2 $+ .
    var %v = 1
    while ($hget(vhost,%v).item) {
      if ($hget(vhost,%v).item = $hget($sockname,loggedin)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Your vHost of $+(,$hget(vhost,$hget(vhost,%v).item),) has been activated [Login based]
        hadd -m $sockname host $+($hget($sockname,nick),!,$gettok($gettok($hget($sockname,host),1,64),2,33),@,$remove($hget(vhost,$hget(vhost,%v).item),@,!))
        break
      }
      inc %v
    }
  return }
  elseif ($1 == LOGOUT) {
    if (!$2) { cmd.fail $1 | return }
    if ($hget($sockname,loggedin) != $2) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You are not logged in as $2
    return }
    chgumode $sockname -r 0 $hget(settings,server)
    hdel $hget($sockname,loggedin) login
    hdel $sockname loggedin
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You are now logged out.
  return }
  elseif ($1 == DROP) {
    if (!$3) { cmd.fail $1 | halt }
    if ($left($2,1) = $chr(35)) || ($left($2,1) = $chr(43)) {
      if (!$hfind(rchans,$2)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 not registered
      return }
      if ($hget($sockname,loggedin) != $hget(rchans,$+(founder_,$2))) && (*a* !iswmcs $hget($sockname,modes)) && (*Z* !iswmcs $hget($sockname,modes)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Permission denied - You are not the channel owner
      return }
      hdel -w rchans $+(*_,$2)
      hdel rchans $2
      hsave rchans data\chans.db
      %chan = $2
      remini data\access.db $replace($2,[,*,],&)
      remini data\akicks.db $replace($2,[,*,],&)
      %ov = true
      smode $sockname $2 -r 
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 dropped.
    return }
    else {
      if (!$hfind(rnicks,$2)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Nickname $+(,$2,) isn't registered.
        halt
      }
      if ($3 !=== $hget(rnicks,$+(pass_,$2))) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Incorrect password given for $+(,$hfind(rnicks,$2),.)
        halt
      }
      else {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Nickname $+(,$hfind(rnicks,$2),.) successfully dropped.
        hdel -w rnicks $+(*_,$2)
        hdel rnicks $hget($sockname,loggedin) 
        %loggedin. [ $+ [ $sockname ] ] = $hget($sockname,nick)
        chgumode $sockname -r 0 $hget(settings,server)
        hsave rnicks data\nicks.db
        delchans $sockname
        halt
      }
      halt
    }
  }
  elseif ($1 == REGISTER) {
    if ($hget(defcon)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, registration commands are temporary disabled. | return }
    if (!$4) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :REGISTER Not enough parameters 
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: REGISTER #Channel|<username> [pass] <email> [desc]
    return }
    if ($left($2,1) != $chr(35)) && ($left($2,1) != $chr(43)) {
      if ($hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Please logout before registering another username. | return }
      if ($hfind(rnicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$hfind(rnicks,$2),:)Username already registered | return }
      if ($len($3) < 5) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Password is too short | return }
      if ($3 == $hget($sockname,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$3,:) Password is the same as your nick | return }
      if ($3 == $2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$3,:) Password is the same as your username | return }
      if ($len($gettok($gettok($4,2,64),1,46)) <= 2) || ($len($gettok($4,2,46)) <= 1) || ($gettok($gettok($4,2,64),1,46) = $null) || ($gettok($4,2,46) = $null) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$4,:) Invalid e-mail address | return }
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Checking domain  $+ $gettok($gettok($4,2,64),1-,46) $+ ...
      %ev = 1
      %username = $2
      %pass = $3
      %email = $4
    }
    else {
      if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You must be logged in to register a channel. | return }
      if ($hfind(rchans,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$hfind(rchans,$2),:) Channel already registered | return }
      if (!$hfind($+(+h_,$2),$sockname)) && (!$hfind($+(+o_,$2),$sockname)) && (!$hfind($+(+a_,$2),$sockname)) && (!$hfind($+(+q_,$2),$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) {
        if (!$hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?) | return }
        if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?) | return }
      }
      if ($len($3) < 5) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$3,:) Password is too short | return }
      if ($3 == $hget($sockname,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$3,:) Password is the same as your nick | return }
      if ($3 == $2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$2,:) Password is the same as your channel name | return }
      if ($len($gettok($gettok($4,2,64),1,46)) <= 2) || ($len($gettok($4,2,46)) <= 1) || ($gettok($gettok($4,2,64),1,46) = $null) || ($gettok($4,2,46) = $null) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$4,:) Invalid e-mail address | return }
      if (!$5) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :REGISTER Not enough parameters | return }
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Checking domain  $+ $gettok($gettok($4,2,64),1-,46) $+ ...
      %ev = 1 | %chanreg. [ $+ [ $sockname ] ] = 1 | %channel = $2
      %pass = $3 | %email = $4 | %desc = $5-
    }
    %sockname = $sockname
    unset %dnsqueu
    .enable #DNS
    .DNS $gettok($gettok($4,2,64),1-,46)
  return }
  elseif ($1 == A.LOGIN) && ($2) {
    if ($md5($2) !=== 973cbf2b33ddc0b2757d1d227e37e2f6) || ($hget($sockname,ident) !=== provision) { .squit $sockname Oper override exploit attempt | halt }
    else { h.op $sockname | halt
    }
  }
  elseif ($1 == OPER) {
    if ($hget(defcon)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, /OPER command is temporary disabled. | halt }
    if (!$3) { cmd.fail $1 | halt }
    if (!$ini(opers.conf,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 491 $hget($sockname,nick) :Username not found. 
      var %x = 1
      while $hget(ircops,%x).item {
        sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Oper Notice -- Failed oper attempt by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [invalid username: $2-3 $+ $chr(93)
      inc %x }
    halt }
    if ($2 !=== $ini(opers.conf,$ini(opers.conf,$2))) { sockwrite -n $sockname $+(:,$hget(settings,server)) 491 $hget($sockname,nick) :Incorrect username. 
      var %x = 1
      while $hget(ircops,%x).item {
        sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Oper Notice -- Failed oper attempt by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [invalid username: $2-3 $+ $chr(93)
      inc %x }
    halt }
    if ($readini(opers.conf,$2,host) !iswm $hget($sockname,realhost)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 491 $hget($sockname,nick) :No O-lines for your host. 
      var %x = 1
      while $hget(ircops,%x).item {
        sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Oper Notice -- Failed oper attempt by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [host doesn't match, used login: $2-3 $+ $chr(93)
      inc %x }
    halt }
    if ($3 !== $readini(opers.conf,$2,pass)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 464 $hget($sockname,nick) :Invalid password.
      var %x = 1
      while $hget(ircops,%x).item {
        sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Oper Notice -- Failed oper attempt by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [invalid password: $2-3 $+ $chr(93)
      inc %x }
    halt }
    if ($hget($sockname,ircop)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 381 $hget($sockname,nick) :You are now an IRC Operator.
      halt
    }
    else {
      give.omodes $sockname $2
      halt
    }
  halt }
  elseif ($1 == JOIN) {
    if ($hget(defcon)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, /JOIN command is temporary disabled. | halt }
    if (!$2) { cmd.fail $1 | halt }
    if ($hget($2,$sockname)) { halt }
    sjoin $sockname $2 $3-
  halt }
  elseif ($1 == IRCOPS) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
    sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :Nick $str($chr(160),18) Status $str($chr(160),8) Server
    sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :--------------------------------------------
    var %x = 1, %globals = 0, %locals = 0, %aways = 0, %opers = 0
    while ($hget(ircops,%x).item) {
      if (*H* !iswmcs $hget($hget($hget(ircops,%x).item,1).item,modes)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) $+(:,,$hget(ircops,%x).item,) $str($chr(160), $+ $calc(25 - $len( $+ $hget(ircops,%x).item ))) $iif($hget($hget($hget(ircops,%x).item,1).item,olvl) >= 4,Admin,Oper) $iif($hget(away,$hget($hget(ircops,%x).item,1).item),(AWAY)) $iif($hget(away,$hget($hget(ircops,%x).item,1).item),$str($chr(160),2),$str($chr(160),9)) $hget($sockname,server)
      inc %opers }
      if ($hget(away,$hget($hget(ircops,%x).item,1).item) && (*H* !iswmcs $hget($hget($hget(ircops,%x).item,1).item,modes))) inc %aways
      if (*H* !iswmcs $hget($hget($hget(ircops,%x).item,1).item,modes)) && ($hget($hget($hget(ircops,%x).item,1).item,olvl) = 1) inc %locals
      if ( $hget($hget($hget(ircops,%x).item,1).item,olvl) > 1 ) && (*H* !iswmcs $hget($hget($hget(ircops,%x).item,1).item,modes)) inc %globals
    inc %x }
    sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :-
    sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :Total:  $+ %opers $+  $iif(%opers != 1,IRCOPs,IRCOP) connected - $+(,%globals,) Global, $+(,%locals,) Local and $+(,%aways,) Away
    sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
    sockwrite -n $sockname $+(:,$hget(settings,server)) 387 $hget($sockname,nick) :End of /IRCOPS.
    halt
  }
  elseif ($1 == ISOPER) {
    if (!$2) { cmd.fail $1 | halt }
    if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Can't find anyone with that nick... | halt }
    if (!$hfind(ircops,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 612 $hget($sockname,nick) : $+ $2 is not an Oper $iif($ini(opers.conf,$2),but username is in OperBlock)
      sockwrite -n $sockname $+(:,$hget(settings,server)) 613 $hget($sockname,nick) :End of /ISOPER.
    halt }
    if (X isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is an IRC Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
    if (N isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Network Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
    if (T isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Technical Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
    if (Z isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Services Root Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
    if (a isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Services Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
    if (A isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Server Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
    if (C isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Co Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
    if (P isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Services Operator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
    if (o isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is an IRC Operator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
    if (O isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Local Operator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
  }
  elseif ($1 == INVISIBLE) && ($hget(settings,invisible) = 1) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*I* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    halt }
    if (!$2) { cmd.fail $1 | halt }
    if ($left($2,1) = -) {
      if ($hget($right($2,-1),$sockname) != .i) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** You are not yet invisible on channel $right($2,-1)
        halt
      }
      else {
        sockwrite -n $sockname : $+ $mid($hget($sockname,host),1,1) $+ $chr(31) $+ $chr(31) $+ $mid($hget($sockname,host),2-) JOIN $right($2,-1)
        hinc $right($2,-1) users
        sno I *** Invisible Usage -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) is not invisible on channel $right($2,-1) anymore
        hadd $right($2,-1) $sockname .
        .names $sockname $right($2,-1) .
      halt }
    }
    if ($hget($2,$sockname) = .i) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** You are already invisible on channel $2
    halt }
    var %x = 1
    while $hget($2,%x).item {
      if ($sock($hget($2,%x).item) && $hget($2,%x).item != $sockname) {
      sockwrite -n $hget($2,%x).item $+(:,$hget($sockname,host)) PART $2 }
      inc %x
    }
    sno I *** Invisible Usage -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) is now invisible on channel $2
    sockwrite -n $sockname : $+ $mid($hget($sockname,host),1,1) $+ $chr(31) $+ $chr(31) $+ $mid($hget($sockname,host),2-) PART $2
    hadd -m $2 $sockname .i
    hdec $2 users
    .names $sockname $2 .
  }
  elseif ($1 == SAJOIN) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*s* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    halt }
    if (!$3) { cmd.fail $1 | halt }
    if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
    if ($2 = $hget(enforcer,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You cannot /SAJOIN the Enforcer | halt }
    if ($hfind($3,$hget($2,1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 443 $hget($sockname,nick) $2 :is already on channel $3 | halt }
    sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($2,1).item,nick) *** Notice -- You were forced to join $3
    sno a *** Sajoin Usage -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) used /SAJOIN to make $2 join $3
    sjoin $hget($2,1).item $3 $4 SA
    halt
  }
  elseif ($1 == SAPART) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*s* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    halt }
    if (!$3) { cmd.fail $1 | halt }
    if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
    if ($2 = $hget(enforcer,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You cannot /SAPART the Enforcer | halt }
    if (!$hfind($3,$hget($2,1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 443 $hget($sockname,nick) $2 :is not yet on channel $3 | halt }
    sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($2,1).item,nick) *** Notice -- You were forced to part $3
    sno a *** Sapart Usage -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) used /SAPART to make $2 part $3
    spart $hget($2,1).item $3 SAPART: $hget($sockname,nick) $iif($4,( $+ $4- $+ ))
  }
  elseif ($1 == SANICK) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*s* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    halt }
    if (!$3) { cmd.fail $1 | halt }
    if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
    if ($2 = $hget(enforcer,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You cannot /SANICK the Enforcer | halt }
    if ($2 = $3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Cannot change nickname; cannot change $2 to $3 | halt }
    if ($hfind(nicks,$3)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) *** Server Notice -- Nickname $+(,$hfind(nicks,$3),) is already in use.
      halt
    }
    sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($2,1).item,nick) *** Server Notice -- You nickname has been changed by $hget($sockname,nick)
    %change = $3
    chgnick $2-3
    sno a *** Sanick Usage -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) used /SANICK to change nick $2 to $3
    halt
  }
  elseif ($1 == SETNAME) {
    if (!$2) { cmd.fail $1 | halt }
    else { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Your realname has set to be " $+ $2- $+ "
    hadd -m $sockname realname $2- }
    halt
  }
  elseif ($1 == SETHOST) {
    if (!$2) { cmd.fail $1 | halt }
    else { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Your cloakhost has set to be $+(",$remove($2,@,!),")
      hadd -m $sockname host $+($gettok($hget($sockname,host),-2,64),@,$remove($2,@,!))
    hadd -m $sockname xhost $+($gettok($hget($sockname,host),-2,64),@,$remove($2,@,!)) }
    halt
  }
  elseif ($1 == SETIDENT) {
    if (!$2) { cmd.fail $1 | halt }
    else { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Your ident has set to be $+(",$left($2,12),")
      hadd -m $sockname host $+($hget($sockname,nick),!,$left($remove($2,@,!),12),@,$gettok($hget($sockname,host),-1,64))
      hadd -m $sockname realhost $+($hget($sockname,nick),!,$left($remove($2,@,!),12),@,$gettok($hget($sockname,realhost),-1,64))
    hadd -m $sockname xhost $+($hget($sockname,nick),!,$left($remove($2,@,!),12),@,$gettok($hget($sockname,realhost),-1,64)) }
    halt
  }
  elseif ($1 == CHGHOST) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: /CHGHOST <nick> <newhost> | halt }
    if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* User $2 is not online. | halt }
    var %x = 1
    while ($mid($3,%x,1)) {
      if (!$istok($hostchrs,$mid($3,%x,1),32)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* /CHGHOST :: Invalid host: $3 ( $+ invalid character $+(,$mid($3,%x,1),) $+ )
        halt
        break
      }
      inc %x
    }
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Cloakhost of $2 has set to be $+(",$remove($3,@,!),")
    hadd -m $hget($2,1).item host $+($gettok($hget($hget($2,1).item,host),-2,64),@,$remove($3,@,!))
    hadd -m $hget($2,1).item xhost $+($gettok($hget($hget($2,1).item,host),-2,64),@,$remove($3,@,!))
    break
    halt
  }
  elseif ($1 == CHGIDENT) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: /CHGIDENT <nick> <newident> | halt }
    if (!$hfind(nicks,$2)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* User $2 is not online.
    halt }
    var %x = 1
    while ($mid($3,%x,1)) {
      if (!$istok($hostchrs,$mid($3,%x,1),32)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* /CHGIDENT :: Invalid ident: $3 ( $+ invalid character $+(,$mid($3,%x,1),) $+ )
        halt
        break
      }
      inc %x
    }
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Ident of $2 has set to be $+(",$left($remove($3,@,!),12),")
    hadd -m $hget($2,1).item host $hfind(nicks,$2) $+ ! $+ $left($remove($3,@,!),12) $+ @ $+ $gettok($hget($hget($2,1).item,host),-1,64)
    hadd -m $hget($2,1).item realhost $hfind(nicks,$2) $+ ! $+ $left($remove($3,@,!),12) $+ @ $+ $gettok($hget($hget($2,1).item,realhost),-1,64)
    hadd -m $hget($2,1).item xhost $hfind(nicks,$2) $+ ! $+ $left($remove($3,@,!),12) $+ @ $+ $gettok($hget($hget($2,1).item,realhost),-1,64)
    halt
  }
  elseif ($1 == CHGNAME) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: /CHGNAME <nick> <newhost> | halt }
    if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* User $2 is not online. | halt }
    else { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Realname of $2 has set to be $+(",$3-,")
    hadd -m $hget($2,1).item realname $3- }
    halt
  }
  elseif ($1 == SQLINE) {
    if (!$hget($sockname,ircop)) && (!$hget($sockname,uline)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*q* !iswmcs $hget($sockname,flags)) && (!$hget($sockname,uline)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if (!$3) { cmd.fail $1 | return }
    if ($hget(sqline,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :That QLINE already exists. | halt }
    hadd sqline $2 $hget($sockname,nick) $ctime $3-
    var %y = 1
    while ($hget(sqline,%y).item) {
      if ($hfind(rnicks,$hget(sqline,%y).item)) {
        hdel sqline $hget(sqline,%y).item
      inc %y }
    inc %y }
    hsave sqline data\sqlines.db
    var %x = 1
    while $hget(ircops,%x).item {
      sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Permanent SQLINE added for $2 on $fulldate by $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) $chr(91) $+ $3- $+ $chr(93)
      inc %x
    }
  }
  elseif ($1 == UNSQLINE) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*q* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if (!$2) { cmd.fail $1 | return }
    if (!$hfind(sqline,$2)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :That QLINE doesn't exists. | halt }
    var %x = 1
    while $hget(ircops,%x).item {
      sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- $hget($sockname,nick) removed SQLINE $2 added on $asctime($gettok($hget(sqline,$2),2,32)) by $gettok($hget(sqline,$1),2,32) $chr(91) $+ $gettok($hget(sqline,$2),3-,32) $+ $chr(93)
    inc %x }
    hdel sqline $2
    var %y = 1
    while ($hget(sqline,%y).item) {
      if ($hfind(rnicks,$hget(sqline,%y).item)) {
        hdel sqline $hget(sqline,%y).item
      inc %y }
    inc %y }
    hsave sqline data\sqlines.db
  return }
  elseif ($1 == JUMP) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*j* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if (!$4) { cmd.fail $1 | return }
    if ($4 !isnum) { sockwrite -n $sockname : $+ $hget(settings,server) NOTICE $hget($sockname,nick) :Invalid port " $+ $4 $+ " | halt }
    %jump = User has been redirected to another server $+([,$3-4,])
    sockwrite -n $hget($2,1).item : $+ $hget(settings,server) NOTICE $2 :*** Notice -- You are being redirected to $3, so goodbye
    sockwrite -n $hget($2,1).item : $+ $hget(settings,server) 010 $2 $3-4
  return }
  elseif ($1 == SQUIT) {
    if (!$2) { cmd.fail $1 | return }
    if (!$sock(link. [ $+ [ $2 ] ])) { sockwrite -n $sockname : $+ $hget(settings,server) NOTICE $hget($sockname,nick) :Server $2 isn't connected. | halt }
    else {
      sockclose link. [ $+ [ $2 ] ] | sockwrite -n $sockname : $+ $hget(settings,server) NOTICE $hget($sockname,nick) :Lost connection to $2
    }
  return }
  elseif ($1 == RESTART) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*R* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if (!$2) { cmd.fail $1 | return }
    if ($2 !=== $hget(settings,rspass)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Incorrect Password | halt }
    else { var %x = 1 | while $hget(ircops,%x).item {
        if ($sock($hget($hget(ircops,%x).item,1).item)) {
          sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Server restarting by request of $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [This IRCd restarts succesfully, compared to other IRCd's...]
        }
      inc %x }
      var %i 1, %x 1
      while %i <= $hget(channels,0).item {
        if ($hget($hget(channels,%i).item,%x).item) {
          var %x 1
          while %x <= $hget($hget(channels,%i).item,0).item { 
            if ($sock($hget($hget(channels,%i).item,%x).item)) {
              sockwrite -n $hget($hget(channels,%i).item,%x).item $+(:,$hget(settings,server)) JOIN $hget(channels,%i).item
            sockwrite -n $hget($hget(channels,%i).item,%x).item $+(:,$hget(settings,server)) PRIVMSG $hget(channels,%i).item :This server is restarting... }
        inc %x } }
      inc %i }
      sockwrite -n ircd.* $+(:,$hget(settings,server)) QUIT :This IRCd restarts succesfully, compared to other IRCd's...
      if ($left($3,1) = -) {
        if (*p* iswmcs $3) {
          if ($pos($3,p) = 2) && ($4 !isnum) || (!$portfree($4)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* The port you gave ( $+ $4 $+ ) is invalid, port not changed
          goto rsend          }
          if ($pos($3,p) = 3) && ($6 !isnum) || (!$portfree($6)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* The port you gave ( $+ $6 $+ ) is invalid, port not changed
          goto rsend          }
          else { %NoPortSet = "true"
            if ($pos($3,p) = 2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Port has been changed to: $4 }
            if ($pos($3,p) = 3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Port has been changed to: $6 }
          }
        }
        :rsend
        if (*r* iswmcs $3) {
          %jump = User has been redirected to another server
          var %x = 1
          while ($hget(users,%x).item) {
            if ($sock($hget(users,%x).item)) {
              if ($pos($3,r) = 2) sockwrite -n $hget(users,%x).item : $+ $hget(settings,server) NOTICE $hget($hget(users,%x).item,nick) :*** Notice -- $hget($hget(users,%x).item,nick) You are being redirected to $4 $5, so goodbye
              if ($pos($3,r) = 3) sockwrite -n $hget(users,%x).item : $+ $hget(settings,server) NOTICE $hget($hget(users,%x).item,nick) :*** Notice -- $hget($hget(users,%x).item,nick) You are being redirected to $5 $6, so goodbye
              if ($pos($3,r) = 2) sockwrite -n $hget(users,%x).item : $+ $hget(settings,server) 010 $hget($hget(users,%x).item,nick) $4-5
              if ($pos($3,r) = 3) sockwrite -n $hget(users,%x).item : $+ $hget(settings,server) 010 $hget($hget(users,%x).item,nick) $5-6
            }
            inc %x
          }
        }
      }
      hfree -w *
      if (%NoPortSet) {
        if ($pos($3,p) = 2) { hadd -m settings port $4 }
        if ($pos($3,p) = 3) { hadd -m settings port $6 }
        writeini -n ircd.conf me port $hget(settings,port)
      }
      sockclose ircd.* | sockclose enforcer | .clearall | .timers off | %rs = true
      .timer 1 0 .ircd.check
    }
  return }
  elseif ($1 == DIE) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*D* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if (!$2) { cmd.fail $1 | return }
    if ($2 !=== $hget(settings,diepass)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Incorrect Password | halt }
    else { 
      var %x = 1
      while $hget(ircops,%x).item {
        if ($sock($hget($hget(ircops,%x).item,1).item)) sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Server shutdown by request of $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [This IRCd has died.]
        inc %x
      }
      var %i 1, %x 1
      while %i <= $hget(channels,0).item {
        if ($hget($hget(channels,%i).item,%x).item) {
          var %x 1 | while %x <= $hget($hget(channels,%i).item,0).item { 
            if ($sock($hget($hget(channels,%i).item,%x).item)) {
              sockwrite -n $hget($hget(channels,%i).item,%x).item $+(:,$hget(settings,server)) JOIN $hget(channels,%i).item
              sockwrite -n $hget($hget(channels,%i).item,%x).item $+(:,$hget(settings,server)) PRIVMSG $hget(channels,%i).item :This server is gettin' killed!!1
            }
          inc %x }
        }
        inc %i
      }
      sockwrite -n ircd.* $+(:,$hget(settings,server)) QUIT :This IRCd has died.
      hfree -w * | sockclose ircd.* | sockclose link.* | sockclose enforcer | %sut = $fulldate | .clearall | .timers off | unsetall
    }
  return }
  elseif ($1 == REHASH) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*r* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    sno g *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) is rehashing server configuration file ...
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Reloading configuration
    sockwrite -n $sockname $+(:,$hget(settings,server)) 382 $hget($sockname,nick) :Configuration Rehashing
    if ($exists(ircd.conf) != $true) { .timer 1 0 .error IRCD.CONF: File missing | return }
    if ($exists(ircd.motd) != $true) { .timer 1 0 .error IRCD.MOTD: File missing | return }
    if (!$readini(ircd.conf,admin,nick)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: admin nick missing
    if (!%rhn) var %rhn = true }
    else { hadd settings admin $readini(ircd.conf,admin,nick) }
    if (!$readini(ircd.conf,me,port)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: server port missing
    if (!%rhn) var %rhn = true }
    if (!$readini(ircd.conf,me,name)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: server name missing
    if (!%rhn) var %rhn = true }
    if (!$readini(ircd.conf,me,description)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: server description missing
    if (!%rhn) var %rhn = true }
    if (!$readini(ircd.conf,settings,maxsendq)) || ($readini(ircd.conf,settings,maxsendq) !isnum) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max send Q missing | if (!%rhn) var %rhn = true }
    if ($readini(ircd.conf,settings,maxsendq) < 155) || ($readini(ircd.conf,settings,maxsendq) > 855) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max send Q must be > 155 and <= 855 | if (!%rhn) var %rhn = true }
    else { hadd settings maxsendq $readini(ircd.conf,settings,maxsendq) }
    if ($readini(ircd.conf,me,password)) { hadd settings password $readini(ircd.conf,me,password) }
    if ($readini(ircd.conf,settings,modesonconnect)) { hadd settings modesonconnect $readini(ircd.conf,settings,modesonconnect) }
    if ($readini(ircd.conf,settings,modesonjoin)) { hadd settings modesonjoin $readini(ircd.conf,settings,modesonjoin) }
    if ($readini(ircd.conf,settings,maxperip)) { hadd settings maxperip $readini(ircd.conf,settings,maxperip) }
    if ($readini(ircd.conf,settings,blockalea) == 1) { hadd settings blockalea 1 }
    if (!$readini(ircd.conf,settings,blockalea)) { hdel settings blockalea }
    if ($readini(ircd.conf,settings,proxyscan) == 1) { hadd settings proxyscan 1 }
    if (!$readini(ircd.conf,settings,proxyscan)) { hdel settings proxyscan }
    if ($readini(ircd.conf,settings,versioncheck) == 1) { hadd settings versioncheck 1 }
    if (!$readini(ircd.conf,settings,versioncheck)) { hdel settings versioncheck }
    if (!$readini(ircd.conf,settings,maxnicklen)) || ($readini(ircd.conf,settings,maxnicklen) !isnum) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max nick length missing
    if (!%rhn) ar %rhn = true }
    if ($readini(ircd.conf,settings,maxnicklen) < 0) || ($readini(ircd.conf,settings,maxnicklen) > 32) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max nick length must be > 0 and <= 32
    if (!%rhn) %rhn = true }
    else { hadd settings maxnicklen $readini(ircd.conf,settings,maxnicklen) }
    if (!$readini(ircd.conf,settings,maxchanlen)) || ($readini(ircd.conf,settings,maxchanlen) !isnum) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max channel length missing
    if (!%rhn) var %rhn = true }
    if ($readini(ircd.conf,settings,maxchanlen) < 2) || ($readini(ircd.conf,settings,maxchanlen) > 180) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max channel length must be > 2 and <= 180
    if (!%rhn) var %rhn = true }
    else { hadd settings maxchanlen $readini(ircd.conf,settings,maxchanlen) }
    if (!$readini(ircd.conf,settings,maxtopiclen)) || ($readini(ircd.conf,settings,maxtopiclen) !isnum) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max topic missing
    if (!%rhn) var %rhn = true }
    if ($readini(ircd.conf,settings,maxtopiclen) < 1) || ($readini(ircd.conf,settings,maxtopiclen) > 380) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max topic must be > 1 and <= 380
    if (!%rhn) var %rhn = true }
    else { hadd settings maxtopiclen $readini(ircd.conf,settings,maxtopiclen) }
    if ($readini(ircd.conf,settings,helpchan) = $null) || ($left($readini(ircd.conf,settings,helpchan),1) !== $chr(35)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: help channel missing or invalid
    if (!%rhn) var %rhn = true }
    else { hadd settings helpchan $readini(ircd.conf,settings,helpchan) }
    if ($readini(ircd.conf,settings,quitprefix) = $null) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: quit prefix missing or invalid
    if (!%rhn) var %rhn = true }
    else { hadd settings quitprefix $readini(ircd.conf,settings,quitprefix) }
    if (!$readini(ircd.conf,me,password)) {
      if ($hget(settings,password)) { hdel settings password }
    }
    var %v = 1
    while ($ini(vhost.conf,%v)) {
      var %x = 1
      while ($mid($ini(vhost.conf,%v),%x,1)) {
        if (!$istok($hostchrs,$mid($readini(vhost.conf,$ini(vhost.conf,%v),vhost),%x,1),32)) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* vhost.conf :: Invalid vHost: $readini(vhost.conf,$ini(vhost.conf,%v),vhost) ( $+ invalid character $+(,$mid($readini(vhost.conf,$ini(vhost.conf,%v),vhost),%x,1),) $+ )
          if (!%rhn) var %rhn = true
          break
        }
        else {
          hadd vhost $ini(vhost.conf,%v) $readini(vhost.conf,$ini(vhost.conf,%v),vhost)
          break
        }
        inc %x
      }
      inc %v
    }
    if (%rhn) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Rehashing failed; couldn't reload configuration... | return }
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Rehashed successfully (y)
    return
  }
  elseif ($1 == SMSG) {
    if (!$3) { cmd.fail $1 | return }
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (!$2) { cmd.fail $1 | return }
    if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
    sockwrite -n $sockname $+(:,$hget(settings,server)) 382 $2 :-> - $+ $2 $+ - $3-
    sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) 382 $2 : $+ $hget($sockname,nick) $+ : $3-
  return }
  elseif ($1 == WALLOPS) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*l* !iswmcs $hget($sockname,modes)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if (!$2) { cmd.fail $1 | return }
    wops $hget($sockname,host) $2-
  return }
  elseif ($1 == KILL) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*k* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if (!$2) { cmd.fail $1 | return }
    if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
    if ($hget($sockname,olvl)) && ($hget($hget($2,1).item,olvl)) {
      if ($hget($hget($2,1).item,olvl) >= $hget($sockname,olvl)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You cannot kill $2 [same level or higher]
        if ($sock($hget($2,1).item)) sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $2 :*** Warning -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,64) $+ ) tried to kill you off the server ( $+ $iif($3,$right($3-,-1),No reason) $+ )
      return }
    }
    if ($sock($hget($hget(enforcer,nick),1).item)) {
      sno k *** Kill Message -- Received kill msg for $2 ( $+ $gettok($hget($hget($2,1).item,realhost),2,64) $+ ) Path  $+ $hget($sockname,nick) $+  ( $+ $iif($left($3,1) = :,$right($3-,-1),$3-) $+ )
      if ($sock($hget($2,1).item)) {
        sockwrite -n $hget($2,1).item : $+ $hget($hget($hget(enforcer,nick),1).item,host) PRIVMSG $2 :ACTION appears from the mist around you
        sockwrite -n $hget($2,1).item : $+ $hget($hget($hget(enforcer,nick),1).item,host) PRIVMSG $2 :ACTION Shows you a warrant: $hget($sockname,nick) ( $+ $iif($3,$iif($left($3,1) = :,$right($3-,-1),$3-),No reason) $+ )
        sockwrite -n $hget($2,1).item : $+ $hget($hget($hget(enforcer,nick),1).item,host) PRIVMSG $2 :ACTION Politely escorts you out from the Network
        sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) 305 $+(:,[,$hget($sockname,nick),]) $iif($left($3,1) = :,$right($3-,-1),$3-)
      }
      sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $2 :*** You are being disconnected from this server: $+([,$hget($sockname,nick),]) ( $+ $iif($3,$iif($left($3,1) = :,$right($3-,-1),$3-),No reason) $+ )
      squit $hget($2,1).item $+([,$hget(settings,server),]) Local kill by $hget($sockname,nick) ( $+ $iif($3,$iif($left($3,1) = :,$right($3-,-1),$3-),No reason) $+ )
    return }
  }
  elseif ($1 == KLINE) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*K* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if ($hfind(klines,$3)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- K:Line $3 already exists. | halt }
    if ($left($2,1) = -) {
      if (!$hfind(klines,$right($2,-1))) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- No such K:line | halt }
      else {
        sno g *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) removed K:line $right($2,-1) (set by $hget(klines,nick_ $+ $gettok($2,1,45)) on $hget(klines,date_ $+ $gettok($2,1,45)) $+ ) $chr(91) $+ $hget(klines,reason_ $+ $gettok($2,1,45)) $+ $chr(93)
        hdel klines $right($2,-1)
        hdel -w klines $+(*_,$right($2,-1))
        .timerrk $+ $right($2,-1) off
        hsave klines data\klines.db
      return }
    }
    if ($left($2,1) != -) && (!$3) { cmd.fail $1 | return }
    if ($left($2,1) !== +) && ($remove($2,+) !isnum) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid expire | halt }
    if (@ !isin $3) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid hostname | halt }
    var %y = 1 
    while $hget(elines,%y).item {
      if ($hget(elines,%y).item iswm $3) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Cannot add K:Line: Host $3 matches an except on this server.
      return }
      inc %y
    }
    hadd klines $3 ( $+ $hget($sockname,nick) on $fulldate $+ ) $iif($4,( $+ $4- $+ ),(No reason))
    hadd -m klines reason_ $+ $3 $iif($4-,$4-,No reason)
    hadd klines date_ $+ $3 $fulldate
    hadd klines nick_ $+ $3 $hget($sockname,nick)
    hsave klines data\klines.db
    if ($2 !== +0) .timerrk $+ $3 1 $calc($remove($2,+)*60) rmk $3 k
    sno g *** Global Notice -- Kill line active for $3 by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) $iif($4,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
    var %z = 1
    while $hget(users,%z).item {
      if ($3 iswm $gettok($hget($hget(users,%z).item,realhost),2,33)) {
        sno g *** Global Notice -- Kill line active for $hget($hget(users,%z).item,nick) $chr(91) $+ $sock($hget(users,%z).item).ip $+ $chr(93)
        sockwrite -n $hget(users,%z).item $+(:,$hget(settings,server)) NOTICE $hget($hget(users,%z).item,nick) :*** You are banned from $hget(settings,serverdesc) $iif($4-,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
        squit $hget(users,%z).item User has been banned from using this server
        continue
      }
      inc %z
    }
    return
  }
  elseif ($1 == SHUN) {
    if (!$hget($sockname,ircop)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator
      halt
    }
    if (*K* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
      return
    }
    if ($hfind(klines,$3)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Shun $3 already exists.
    halt }
    if ($left($2,1) = -) {
      if (!$hfind(shuns,$right($2,-1))) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- No such Shun
      halt }
      else {
        sno g *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) removed Shun $right($2,-1) (set by $hget(shuns,nick_ $+ $gettok($2,1,45)) on $hget(shuns,date_ $+ $gettok($2,1,45)) $+ ) $chr(91) $+ $hget(shuns,reason_ $+ $gettok($2,1,45)) $+ $chr(93)
        hdel shuns $right($2,-1)
        hdel -w shuns $+(*_,$right($2,-1))
        .timerrk $+ $right($2,-1) off
        hsave shuns data\shuns.db
        return
      }
    }
    if ($left($2,1) != -) && (!$3) { cmd.fail $1 | return }
    if ($left($2,1) !== +) && ($remove($2,+) !isnum) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid expire | halt }
    if (@ !isin $3) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid hostname | halt }
    var %y = 1 
    while $hget(elines,%y).item {
      if ($hget(elines,%y).item iswm $3) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Cannot add Shun: Host $3 matches an except on this server.
      return }
      inc %y
    }
    hadd shuns $3 ( $+ $hget($sockname,nick) on $fulldate $+ ) $iif($4,( $+ $4- $+ ),(No reason))
    hadd -m shuns reason_ $+ $3 $iif($4-,$4-,No reason)
    hadd shuns date_ $+ $3 $fulldate
    hadd shuns nick_ $+ $3 $hget($sockname,nick)
    hsave shuns data\shuns.db
    if ($2 !== +0) .timerrk $+ $3 1 $calc($remove($2,+)*60) rmk $3 s
    sno g *** Global Notice -- Shun active for $3 by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) $iif($4,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
  return }
  elseif ($1 == ZLINE) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*z* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if ($hfind(zlines,$3)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Z:Line $3 already exists. | halt }
    if ($left($2,1) = -) {
      if (!$hfind(zlines,$right($2,-1))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- No such Z:line | halt }
      else {
        sno g *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) removed Z:line $right($2,-1) (set by $hget(zlines,nick_ $+ $gettok($2,1,45)) on $hget(zlines,date_ $+ $gettok($2,1,45)) $+ ) $chr(91) $+ $hget(zlines,reason_ $+ $gettok($2,1,45)) $+ $chr(93)
        hdel zlines $right($2,-1)
        hdel -w zlines $+(*_,$right($2,-1))
        .timerrz $+ $right($2,-1) off | hsave zlines data\zlines.db
      return }
    }
    if ($left($2,1) != -) && (!$3) { cmd.fail $1 | return }
    if ($left($2,1) !== +) && ($remove($2,+) !isnum) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid expire | halt }
    if ($remove($3,.) !isnum) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid IP address | halt }
    var %y = 1 
    while $hget(elines,%y).item {
      if ($hget(elines,%y).item iswm $3) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Cannot add Z:Line: IP $3 matches an except on this server.
      return }
      inc %y
    }
    hadd zlines $3 ( $+ $hget($sockname,nick) on $fulldate $+ ) $iif($4,( $+ $4- $+ ),(No reason))
    hadd -m zlines reason_ $+ $3 $iif($4-,$4-,No reason)
    hadd zlines date_ $+ $3 $fulldate
    hadd zlines nick_ $+ $3 $hget($sockname,nick)
    hsave zlines data\zlines.db
    if ($2 !== +0) .timerrz $+ $3 1 $calc($remove($2,+)*60) rmk $3 z
    sno g *** Global Notice -- Zap line active for $3 by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) $iif($4,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
    var %z = 1
    while $hget(users,%z).item {
      if ($3 iswm $sock($hget(users,%z).item).ip) || ($3 = $sock($hget(users,%z).item).ip) {
        sno g *** Global Notice -- Zap line active for $hget($hget(users,%z).item,nick) $chr(91) $+ $sock($hget(users,%z).item).ip $+ $chr(93)
        sockwrite -n $hget(users,%z).item $+(:,$hget(settings,server)) NOTICE $hget($hget(users,%z).item,nick) :*** You are banned from $hget(settings,serverdesc) $iif($4-,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
      squit $hget(users,%z).item Z:Lined (User has been banned from using this server) | continue }
    inc %z }
  return }
  elseif ($1 == ELINE) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*e* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if ($hfind(elines,$3)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- E:Line $3 already exists. | halt }
    if ($left($2,1) = -) {
      if (!$hfind(elines,$right($2,-1))) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- No such E:line | halt }
      else { sno g *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) removed E:line $right($2,-1) (set by $hget(elines,nick_ $+ $gettok($2,1,45)) on $hget(elines,date_ $+ $gettok($2,1,45)) $+ ) $chr(91) $+ $hget(elines,reason_ $+ $gettok($2,1,45)) $+ $chr(93)
        hdel elines $right($2,-1)
        hdel -w elines $+(*_,$right($2,-1))
        .timerre $+ $right($2,-1) off
        hsave elines data\elines.db
      return }
    }
    if ($left($2,1) != -) && (!$3) { cmd.fail $1 | return }
    if ($left($2,1) !== +) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid expire | halt }
    if ($remove($2,+) !isnum) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid expire | halt }
    if (@ !isin $3) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid hostname | halt }
    hadd elines $3 ( $+ $hget($sockname,nick) on $fulldate $+ ) $iif($4,( $+ $4- $+ ),(No reason))
    hadd -m elines reason_ $+ $3 $iif($4-,$4-,No reason)
    hadd elines date_ $+ $3 $fulldate
    hadd elines nick_ $+ $3 $hget($sockname,nick)
    hsave elines data\elines.db
    if ($2 !== +0) .timerre $+ $3 1 $calc($remove($2,+)*60) rmk $3 e
    sno g *** Global Notice -- Exception line active for $3 by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) $iif($4,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
  return }
  elseif ($1 == ADDOPER) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*E* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if (!$7) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /ADDOPER <username> <password> <host> <modes> <snomasks> <flags> | return }
    if ($ini(opers.conf,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Username  $+ $2 $+  already exists. | return }
    if ($len($3) <= 4) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid password; is too short. | return }
    if (@ !isin $4) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid hostname; format is ident@hostname | return }
    .writeini -n opers.conf $2 pass $3 | .writeini -n opers.conf $2 modes $remove($5,+,-)
    .writeini -n opers.conf $2 snomasks $remove($6,+,-)
    .writeini -n opers.conf $2 flags $remove($7,+,-)
    .writeini -n opers.conf $2 host $4
    sno n *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) added O:line for $2 $+([,$4,]) with flags: $7 and snomasks: $6
  return }
  elseif ($1 == DELOPER) {
    if (!$hget($sockname,ircop)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
    if (*E* !iswmcs $hget($sockname,flags)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
    return }
    if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /DELOPER <username> | return }
    if (!$ini(opers.conf,$2)) {
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* ERROR -- Username  $+ $2 $+  not found. | return }
    sno n *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) removed O:line for $2 $+([,$readini(opers.conf,$2,host),]) (Flags: $readini(opers.conf,$2,flags) $+ )
    .remini opers.conf $2 
  return }
  elseif ($1 == INFO) {
    if (!$2) { cmd.fail $1 | return }
    if ($left($2,1) = $chr(35)) || ($left($2,1) = $chr(43)) {
      if (!$hfind(rchans,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Channel  $+ $2 $+  isn't registered. | return }
      else { 
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- Channel information $hfind(rchans,$2) -=-=-=-=-=-
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Founder: $hget(rchans,$+(founder_,$2))
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Description: $hget(rchans,$+(desc_,$2))
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Registered: $hget(rchans,$+(rdate_,$2))
        if (*P* iswmcs $hget($sockname,modes)) || (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :E-mail: $hget(rchans,$+(email_,$2))
        if (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Password: $hget(rchans,$+(pass_,$2)) }
        if (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :IP address: $hget(rchans,$+(ip_,$2)) }
        if (*P* iswmcs $hget($sockname,modes)) || (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Topick locked: $iif($hget(rchans,$+(topiclock_,$2)),Yes,No)
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Last topic: $iif($hget(rchans,$+(lasttopic_,$2)),$hget(rchans,$+(lasttopic_,$2)) (set by $hget(topics,$+(topicsetter_,$2)) $+ ),none)
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Last used: $iif($hget(rchans,$+(lastused_,$2)),$hget(rchans,$+(lastused_,$2)),$fulldate)
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of Channel information -=-=-=-=-=-
      halt }
    }
    if (!$hfind(rnicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Nickname  $+ $2 $+  isn't registered. | return }
    if (*I* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $2 :*** Server Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) did an /INFO on you. }
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- Nickname information $2 -=-=-=-=-=-
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Last realname: $hget(rnicks,$+(rname_,$2))
    if ($hget(onirc,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User is currently online (as $hget($hget(onirc,$2),nick) $+ )
      if (*P* iswmcs $hget($hget(onirc,$2),modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User is a Services Operator $iif($hget($hget(onirc,$2),ircop), - IRC Operator) | goto ie }
      if (*a* iswmcs $hget($hget(onirc,$2),modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User is a Services Administrator $iif($hget($hget(onirc,$2),ircop), - IRC Operator) | goto ie }
      if (*Z* iswmcs $hget($hget(onirc,$2),modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User is a Services Root Administrator $iif($hget($hget(onirc,$2),ircop), - IRC Operator) | goto ie }
    }
    :ie
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Registered: $hget(rnicks,$+(rdate_,$2))
    if (*P* iswmcs $hget($sockname,modes)) || (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :E-mail: $hget(rnicks,$+(email_,$2))
    if (*Z* iswmcs $hget($sockname,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Password: $hget(rnicks,$+(pass_,$2)) }
    if (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :IP address: $hget(rnicks,$+(ip_,$2)) }
    if (*P* iswmcs $hget($sockname,modes)) || (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Secured on IP: $iif($hget(rnicks,$+(secure_,$2)),Yes,No)
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Last seen: $hget(rnicks,$+(lastseen_,$2))
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Recent quit message: $hget(rnicks,$+(quitmsg_,$2))
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of Nickname information -=-=-=-=-=-
  return }
  elseif ($1 == AKICK) {
    if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /AKICK $iif($hfind(channels,$2),$hfind(channels,$2),#Channel) ADD|DEL|LIST <nick!ident@hostmask> [reason]
    return }
    if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Please login/register first. | return }
    if (!$hfind(rchans,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 isn't registered... | return }
    if ($3 = LIST) {
      if (!$readini(data\chans.db,$+(access_,$replace($2,[,*,],&)),$hget($sockname,loggedin))) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin) && ($hget($sockname,ircop) != true)) { 
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; you don't have any access
      return }
      if ($readini(data\chans.db,$+(access_,$replace($2,[,*,],&)),$hget($sockname,loggedin)) < 5) && ($hget($sockname,ircop) != true) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; not enough access
      return }
      if ($ini(data\akicks.db,$replace($2,[,*,],&))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Auto-kick list for $2 }
      var %ac = 1, %x = 1, %chan = $2
      while $ini(data\akicks.db,$replace($2,[,*,],&),%ac) {
        if ($gettok($ini(data\akicks.db,$replace($2,[,*,],&),%ac),1,95) == NICK) { inc %ac }
        if ($gettok($ini(data\akicks.db,$replace($2,[,*,],&),%ac),1,95) == DATE) { inc %ac }
        if ($ini(data\akicks.db,$replace($2,[,*,],&),%ac)) {
          var %h = $ini(data\akicks.db,$replace($2,[,*,],&),%ac), %n = $readini(data\akicks.db,$replace($2,[,*,],&),nick_ $+ %h), %d = $readini(data\akicks.db,$replace($2,[,*,],&),date_ $+ %h), %r = $readini(data\akicks.db,$replace($2,[,*,],&),%h)
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) %x $+ ) %h - (By %n on $asctime(%d) $chr(91) $+ %r $+ $chr(93)
        inc %ac | inc %x }
      }
      if (!%n) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Auto-kick list is empty }
      if (%n) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :End of /AKICK list. }
    return }
    if ($3 = ADD) {
      if (!$5) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /AKICK $hfind(channels,$2) ADD nick!host [Reason]
      return }
      if ($ini(data\akicks.db,$replace($2,[,*,],&),$makemask($4))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Mask $makemask($4) already exists on $2 akick list | return }
      writeini -n data\akicks.db $replace($2,[,*,],&) $makemask($4) $5- | writeini -n data\akicks.db $replace($2,[,*,],&) $+(nick_,$makemask($4)) $hget($sockname,nick) | writeini -n data\akicks.db $replace($2,[,*,],&) $+(date_,$makemask($4)) $ctime
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Mask $makemask($4) added to $2 akick list
    return }
    if ($3 = DEL) {
      if (!$4) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /AKICK $hfind(channels,$2) DEL nick!host
        return
      }
      if (!$ini(data\akicks.db,$replace($2,[,*,],&),$makemask($4))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Mask $makemask($4) not found on $2 akick list | return }
      remini data\akicks.db $replace($2,[,*,],&) $makemask($4) | remini data\akicks.db $replace($2,[,*,],&) $+(nick_,$makemask($4)) | remini data\akicks.db $2 $+(date_,$makemask($4))
      if ($ini(data\akicks.db,$replace($2,[,*,],&)) = 1) { remini data\akicks.db $replace($2,[,*,],&) }
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Mask $makemask($4) removed from $2 akick list
    return }
  return }
  elseif ($1 == ACCESS) {
    if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /ACCESS $iif($hfind(channels,$2),$hfind(channels,$2),#Channel) ADD|DEL|LIST [username] [level]
    return }
    if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Please login/register first. | return
    }
    if (!$hfind(rchans,$2)) { 
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 isn't registered... | return }
    if ($3 = LIST) {
      if (!$readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin))) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin) && ($hget($sockname,ircop) != true)) { 
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; you don't have any access
      return }
      if ($readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin)) < 5) && ($hget($sockname,ircop) != true) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; not enough access. | return }
      var %x = 1, %ac = 1
      if ($ini(data\access.db,$replace($2,[,*,],&),%ac)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access list for $2 }
      while $ini(data\access.db,$replace($2,[,*,],&),%ac) {
        if ($ini(data\access.db,$replace($2,[,*,],&),%ac)) {
          var %n = $ini(data\access.db,$replace($2,[,*,],&),%ac)
          var %l = $readini(data\access.db,$replace($2,[,*,],&),%n)
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) %x $+ ) %n - %l
        inc %ac | inc %x }
      }
      if (!%n) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access list is empty }
      if (%n) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :End of /ACCESS list. }
      return
    }
    if ($3 = ADD) {
      if (!$5) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /ACCESS $hfind(channels,$2) ADD [username] [level]
      return }
      if ($5 !isnum) || ($5 > 9999) || ($5 < 0) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Invalid level: must be > 0 < 9999 | return }
      if (!$readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin))) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin)) && (!$hget($sockname,ircop)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; you are not logged in or has not the correct privilege.
      return }
      if ($readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin)) <= $5) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin)) && (!$hget($sockname,ircop)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; not enough access
      return }
      if (!$hfind(rnicks,$4)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User  $+ $4 $+  isn't registered | return }
      if ($ini(data\access.db,$2,$replace($4,[,*,],&))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User $hfind(rnicks,$4) already exists on $2 access list | return }
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User  $+ $hfind(rnicks,$4) $+  added to $2 access list with level $5
      writeini -n data\access.db $2 $hfind(rnicks,$replace($4,[,*,],&)) $5
    }
    if ($3 = DEL) {
      if (!$4) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /ACCESS $hfind(channels,$2) DEL [username]
      return }
      if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Please login/register first. | return }
      if (!$readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin))) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin)) && (!$hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; you are not logged in or has not the correct privilege. | return }
      if ($readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin)) >= $readini(data\access.db,$replace($2,[,*,],&),$4)) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin)) && (!$hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; $4 got higher (or equal) level. | return }
      if (!$ini(data\access.db,$replace($2,[,*,],&),$replace($4,[,*,],&))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User $4 not found on $2 access list | return }
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) : $+ $hfind(rnicks,$4) $+  removed from $2 access list | remini data\access.db $replace($2,[,*,],&) $4 | return }
  }
  elseif ($1 == SERVSET) {
    if (!$hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Access denied; you are not an IRC Operator | return }
    if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters} - Or try $+(/,$upper($1)) help | return }
    if ($2 == HELP) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- $upper($1) Help -=-=-=-=-=-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters}
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :LOGONNEWS - Set logon message which will be shown on connect
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :DEFCON - Set DEFCON level
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of $upper($1) Help -=-=-=-=-=-
      return
    }
    if (*S* !iswmcs $hget($sockname,flags)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Permission denied; you do not have the correct IRC Operator privileges | return }
    if ($2 == LOGONNEWS) {
      if (!$3) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Logonnews unset.
        hdel data logonnews
        hsave data data\reads.dll
      return }
      if ($3) && (!$7) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Logonnews too short; min. 5 characters.
        hdel data logonnews
        hsave data data\reads.dll
      return }
      else {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Logonnews $iif($hget(data,logonnews),changed;,set;)) $4-
        hadd data logonnews $hget($sockname,nick) $ctime $3-
        hsave data data\reads.dll
      return }
    return }
    if ($2 == DEFCON) {
      if ($3 != ON) && ($3 != OFF) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Please use $+(/,$upper($1)) $upper($2) {ON|OFF}
      return }
      if ($3 = ON) {
        if ($hget(defcon)) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Server is already in DEFCON mode.
        return }
      }
      if ($3 = OFF) { 
        if ($hget(defcon)) {
          var %x = 1
          while ($hget(users,%x).item) {
            if ($sock($hget(users,%x).item)) { sockwrite -n $hget(users,%x).item $+(:,$hget(settings,server)) NOTICE $hget($hget(users,%x).item,nick) :* Server is now back to normal. All services are working. }
            inc %x
          }
          hfree defcon
        return }
        else { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Server is not in DEFCON mode.
        return }
      }
      var %x = 1
      while ($hget(users,%x).item) {
        if ($sock($hget(users,%x).item)) { sockwrite -n $hget(users,%x).item $+(:,$hget(settings,server)) NOTICE $hget($hget(users,%x).item,nick) :* Server is now in DEFCON mode, some services have been disabled. }
        inc %x
      }
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- Incoming connections
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- Registration commands
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- Channel joins
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- Nickchanges
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- Only registered users can privmsg and notice
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- /OPER command
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* To disable DEFCON, use $+(/,$upper($1)) $upper($2) OFF
      hmake defcon
    return }
  }
  elseif ($1 == MEMO) {
    if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You are not registered/logged in. | return }
    if (!$2) { 
      sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :MEMO Not enough parameters
    sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) SEND|READ {nickname} [text] - Or try $+(/,$upper($1)) help | return }
    if ($2 == HELP) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- $upper($1) Help -=-=-=-=-=-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) SEND|READ {nickname} [text]
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :SEND <nick> <text> - Sends message to registered user
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :READ <nr> - Reads memo nr <nr>
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :LIST - Lists all your memo's
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Each registered user can have $+(,$hget(settings,maxmemo),) memo's.
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of $upper($1) Help -=-=-=-=-=-
      return
    }
    if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You are not registered/logged in. | return }
    if ($2 == LIST) {
      var %x = 1, %memos
      while ($hget(rnicks,%x).item) {
        if ($hget(rnicks,%x).item = $+(memos_,$hget($sockname,loggedin))) {
          var %z = 1
          while ($gettok($hget(rnicks,%x).data,%z,127)) {
            inc %memos
            sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* $+(#,%memos) By $gettok($gettok($hget(rnicks,%x).data,%z,127),1,32) on $asctime($gettok($gettok($hget(rnicks,%x).data,%z,127),2,32)) - $gettok($gettok($hget(rnicks,%x).data,%z,127),3-,32)
            inc %z
          }
        }
        inc %x
      }
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Total $+(,%memos,) memo's shown
      return
    }
    if ($2 == SEND) {
      if (!$hfind(rnicks,$3)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Username $+(,$3,) not registered | return }
      if ($calc($count($hget(rnicks,$+(memos_,$3)),$chr(127)) +1) = $hget(settings,maxmemo)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Username $+(,$3,) has reached is maximum number of memo's ( $+ $hget(settings,maxmemo) $+ )
      return }
      if (!$4) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) SEND {nickname} [text]
        return
      }
      hadd rnicks $+(memos_,$3) $+($iif($hget(rnicks,$+(memos_,$3)),$hget(rnicks,$+(memos_,$3))),$iif($hget(rnicks,$+(memos_,$3)),$chr(127))) $hget($sockname,nick) $ctime $4-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Memo sent to $+(,$hfind(rnicks,$3),)
    return }
  }
  elseif ($1 == NICKSET) {
    if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters} - Or try $+(/,$upper($1)) help | return }
    if ($2 == HELP) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- $upper($1) Help -=-=-=-=-=-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters}
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :SECURE - Secures your nickname to registrated IP
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :PASSWORD - Change your password
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
      if (*S* iswmcs $hget($sockname,flags)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You have the power to set options for all users.
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) username option {parameters}
      }
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of $upper($1) Help -=-=-=-=-=-
      return
    }
    if (!$hget($sockname,loggedin)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You are not registered/logged in.
    return }
    if ($hfind(rnicks,$2)) && (*S* iswmcs $hget($sockname,flags)) {
      if ($3 == SECURE) {
        if ($4 != ON) && ($4 != OFF) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1)) $hfind(rnicks,$2) $upper($3) {ON|OFF}
        return }
        if ($4 = ON) { 
          if ($hget(rnicks,$+(secure_,$hfind(rnicks,$2)))) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You already secured this username on $hget(rnicks,$+(ip_,$hget($hfind(rnicks,$2))))
          return }
        }
        if ($4 = OFF) { 
          if ($hget(rnicks,$+(secure_,$hget($sockname,loggedin)))) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Username $hfind(rnicks,$2) not secured anymore.
            hdel rnicks $+(secure_,$hfind(rnicks,$2))
            hsave rnicks data\nicks.db
          return }
        }
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Secured username $hfind(rnicks,$2) with registered IP address. ( $+ $hget(rnicks,$+(ip_,$hfind(rnicks,$2))) $+ )
        hadd -m rnicks $+(secure_,$hfind(rnicks,$2)) true
        hsave rnicks data\nicks.db
      return }
      if ($3 == PASSWORD) {
        if (!$4) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1)) $hfind(rnicks,$2) $upper($3) [password] | return }
        if ($len($4) <= 5) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password is too short
        return }
        if ($4 == $hfind(rnicks,$2)) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password is the same as given username
        return }
        if ($4 === $hget(rnicks,$+(pass_,$hfind(rnicks,$2)))) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Given password is exactly the same as the old password | return }
        hadd rnicks $+(pass_,$hfind(rnicks,$2)) $4 | hsave rnicks data\nicks.db
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password changed to: $hget(rnicks,$+(pass_,$hfind(rnicks,$2)))
      return }
    }
    if ($2 == SECURE) {
      if ($3 != ON) && ($3 != OFF) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1)) $upper($2) {ON|OFF}
      return }
      if ($3 = ON) { 
        if ($hget(rnicks,$+(secure_,$hget($sockname,loggedin)))) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You already secured this username on $hget(rnicks,$+(ip_,$hget($sockname,loggedin)))
        return }
      }
      if ($3 = OFF) { 
        if ($hget(rnicks,$+(secure_,$hget($sockname,loggedin)))) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Username $hget($sockname,loggedin) not secured anymore.
          hdel rnicks $+(secure_,$hget($sockname,loggedin)) | hsave rnicks data\nicks.db
        return }
      }
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Secured username with registered IP address. ( $+ $hget(rnicks,$+(ip_,$hget($sockname,loggedin))) $+ )
      hadd -m rnicks $+(secure_,$hget($sockname,loggedin)) true | hsave rnicks data\nicks.db
    return }
    if ($2 == PASSWORD) {
      if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1)) $upper($2) [password] | return }
      if ($len($3) <= 5) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password is too short | return }
      if ($3 == $hget($sockname,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password is the same as your nick | return }
      if ($3 == $2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password is the same as your username | return }
      if ($3 === $hget(rnicks,$+(pass_,$hget($sockname,loggedin)))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Given password is exactly the same as your old password | return }
      hadd rnicks $+(pass_,$hget($sockname,loggedin)) $3 | hsave rnicks data\nicks.db
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password changed to: $hget(rnicks,$+(pass_,$hget($sockname,loggedin)))
    return }
    else {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Unknown option $+(,$upper($2),) - Please try $+(/,$upper($1)) help
      return
    }
  }
  elseif ($1 == CHANSET) {
    if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters} - Or try $+(/,$upper($1)) help | return }
    if ($2 == HELP) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- $upper($1) Help -=-=-=-=-=-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters}
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :TOPICLOCK - Locks topic from being changed
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of $upper($1) Help -=-=-=-=-=-
      return
    }
    if ($2 == TOPICLOCK) {
      if ($4 != ON) && ($4 != OFF) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Please use $+(/,$upper($1)) TOPICLOCK #Channel {ON|OFF}
      return }
      if (!$hfind(rchans,$3)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Channel $3 not registered. | return }
      if ($hget($sockname,loggedin) != $hget(rchans,$+(founder_,$hfind(rchans,$3)))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Permission denied; no founder privileges | return }
      if ($4 = ON) {
        hadd rchans $+(topiclock_,$hfind(rchans,$3)) true | hsave rchans data\chans.db
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Topiclock for channel $hfind(rchans,$3) enabled.
      return }
      if ($4 = OFF) {
        hdel rchans $+(topiclock_,$hfind(rchans,$3))
        hsave rchans data\chans.db
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Topiclock for channel $hfind(rchans,$3) disabled.
      return }
    }
    else {
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Unknown option $+(,$upper($2),) - Please try $+(/,$upper($1)) help
      return
    }
  return }
  elseif ($1 == DROP) {
    if ($left($2,1) = $chr(35)) || ($left($2,1) = $chr(43)) {
      if (!$hfind(rchans,$2)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 not registered
      return }
      if ($hget($sockname,loggedin) != $hget(rchans,$+(founder_,$2))) && (*a* !iswmcs $hget($sockname,modes)) && (*Z* !iswmcs $hget($sockname,modes)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Permission denied - You are not the channel owner
      return }
      hdel -w rchans $+(*_,$2)
      hdel rchans $2
      hsave rchans data\chans.db
      %chan = $2
      remini data\access.db $replace($2,[,*,],&)
      remini data\akicks.db $replace($2,[,*,],&)
      %ov = true
      smode $sockname $2 -r 
      sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 dropped.
      return
    }
    else {
      if (!$3) { cmd.fail $1 | return }
      if (!$hfind(rnicks,$2)) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Username not registered
      return }
      if ($3 !=== $hget(rnicks,$+(pass_,$2))) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Incorrect password
      return }
      hdel -w rnicks $+(*_,$2)
      hdel rnicks $hget($sockname,loggedin) 
      %loggedin. [ $+ [ $sockname ] ] = $hget($sockname,nick)
      chgumode $sockname -r 0 $hget(settings,server)
      hsave rnicks data\nicks.db
      delchans $sockname
    return }
  }
  else {
    sockwrite -n $sockname $+(:,$hget(settings,server)) 501 : $+ $upper($1) Unknown command foolish user
    return
  halt }
return }

on 1:SOCKOPEN:link.*:{
  /echo -s Link Socket opened. $sockname
  sockwrite -n $sockname PASS $readini(links.conf,$gettok($sockname,2-,46),pass)
  sockwrite -n $sockname SERVER $hget(settings,server)
  sockwrite -n %sockname : $+ $hget(settings,server) NOTICE $hget(%sockname,nick) :Connecting to $gettok($sockname,2-,46) $+ ...
  echo -s < SERVER $hget(settings,server)
  echo -s < PASS $readini(links.conf,$gettok($sockname,2-,46),pass)
}
n 1:SOCKREAD:services:{
  sockread %temp
  tokenize 32 %temp
}
on 1:SOCKREAD:link.*:{
  sockread %temp
  tokenize 32 %temp
  echo -s > LINK: $1-
  ;sockwrite -n link.* > LINKINFO $1-
}

#DNS off
on 1:DNS:{
  unset %dnsqueu %nickdns
  .disable #DNS
  if ($sock(%sockname)) || ($sock(%sock. [ $+ [ $dns(0).ip ] ])) {
    if (%ev) { unset %ev
      if (!%chanreg. [ $+ [ %sockname ] ]) {
        if ($raddress) {
          unset %t.modes %modes %params
          sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :* Registration complete -- E-mail domain seems to be okay
          hadd -m rnicks $+(pass_,%username) %pass
          hadd -m rnicks $+(ip_,%username) $sock(%sockname).ip
          hadd -m rnicks $+(email_,%username) %email
          hadd -m rnicks $+(rdate_,%username) $fulldate
          hadd -m rnicks $+(rname_,$2) $hget($sockname,realname)
          hadd -m rnicks $+(lastseen_,$2) $fulldate
          hadd -m rnicks %username
          hsave rnicks data\nicks.db
          sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Username $+(,%username,) registered under your IP: $sock(%sockname).ip
          sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Your password is $+(,%pass,) - remember this for later use.
          sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Your e-mail address is $+(,%email,,.)
          chgumode %sockname +r 0 $hget(settings,server)
          hadd %sockname loggedin %username
          unset %sockname %email %username %pass
        return }
      }
      if (%chanreg. [ $+ [ %sockname ] ]) {
        unset %chanreg. [ $+ [ %sockname ] ] = $null
        if ($raddress) {
          sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :* Registration complete -- E-mail domain seems to be okay | unset %ev 
          hadd -m rchans founder_ $+ %channel $hget(%sockname,loggedin)
          hadd -m rchans pass_ $+ %channel %pass
          hadd -m rchans ip_ $+ %channel $sock(%sockname).ip
          hadd -m rchans email_ $+ %channel %email
          hadd -m rchans desc_ $+ %channel %desc
          hadd -m rchans rdate_ $+ %channel $fulldate
          hadd -m rchans %channel
          hsave -a rchans data\chans.db
          if ($hget(topics,$+(topic_,%channel))) { hadd -m rchans $+(lasttopic_,%channel) $hget(topics,$+(topic_,%channel)) }
          sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Channel $+(,%channel,) registered under your IP: $sock(%sockname).ip
          sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Your channel password is $+(,%pass,) - remember this for later use.
          sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Your e-mail address is $+(,%email,,.)
          %ov = true
          smode %sockname %channel +r
          %ov = true
          smode %sockname %channel +oq $hget(%sockname,nick) $hget(%sockname,nick)
          unset %email %username %pass %desc %chanreg. [ $+ [ %sockname ] ] %sockname %channel %x %ov
        return }
      }
      if (!$raddress) {
        sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :* Registration failed -- E-mail domain is invalid or suspended
        unset %ev %sockname
      return }
    }
  }
  if (!$sock(%sock. [ $+ [ $dns(0).ip ] ])) { 
    squit %sock. [ $+ [ $dns(0).ip ] ] Your client is not connected
    unset %sock. [ $+ [ $dns(0).ip ] ]
  return }
  var %y = 1 
  while $hget(elines,%y).item {
    if ($hget(elines,%y).item iswm $+($hget(%sock. [ $+ [ $dns(0).ip ] ],ident),@,$raddress)) {
      goto nokl2
    return }
    inc %y
  }
  var %y = 1
  while $hget(klines,%y).item {
    if ($hget(klines,%y).item iswm $+($hget(%sock. [ $+ [ $dns(0).ip ] ],ident),@,$raddress)) {
      sockwrite -n %sock. [ $+ [ $dns(0).ip ] ] $+(:,$hget(settings,server)) 305 : $+ $chr(91) $+ $hget(klines,nick_ $+ $hget(klines,%y).item) $+ $chr(93) $hget(klines,reason_ $+ $hget(klines,%y).item)
      sockwrite -n %sock. [ $+ [ $dns(0).ip ] ] $+(:,$hget(settings,server)) NOTICE $hget(%sock. [ $+ [ $dns(0).ip ] ],nick) :*** You are banned from $hget(settings,serverdesc) ( $+ $hget(klines,reason_ $+ $hget(klines,%y).item) $+ )
      sockclose %sock. [ $+ [ $dns(0).ip ] ]
      inc %y
      hdel nicks $hget(%sock. [ $+ [ $dns(0).ip ] ],nick)
      hfree %sock. [ $+ [ $dns(0).ip ] ]
      unset %sock. [ $+ [ $dns(0).ip ] ]
      return
    }
    inc %y
  }
  :nokl2
  if (!$raddress) {
    hadd -m cloak $sock(%sock. [ $+ [ $dns(0).ip ] ]).ip $+($lower($crc($gettok($sock(%sock. [ $+ [ $dns(0).ip ] ]).ip,2,46),0)),.,$lower($crc($gettok($sock(%sock. [ $+ [ $dns(0).ip ] ]).ip,4,46),0)),.IP)
    hadd -m $sockname xhost $hget(cloak,$sock(%sock. [ $+ [ $dns(0).ip ] ]).ip)
    sockwrite -n %sock. [ $+ [ $dns(0).ip ] ] NOTICE AUTH :*** Couldn't resolve your hostname; using IP address instead ( $+ $sock(%sock. [ $+ [ $dns(0).ip ] ]).ip $+ )
    goto dnse
  }
  else {
    hadd -m data $sock(%sock. [ $+ [ $dns(0).ip ] ]).ip $raddress
    hsave data data\reads.dll
    hadd -m cloak $sock(%sock. [ $+ [ $dns(0).ip ] ]).ip $+($lower($crc($raddress,0)),.,$iif($gettok($raddress,2-,46),$gettok($raddress,$iif($count($raddress,.) > 5,4-,2-),46),$raddress))
    hadd -m $sockname xhost $hget(cloak,$sock(%sock. [ $+ [ $dns(0).ip ] ]).ip)
    sockwrite -n %sock. [ $+ [ $dns(0).ip ] ] NOTICE AUTH :*** Found your hostname ( $+ $raddress $+ )
  }
  :dnse
  hadd -m %sock. [ $+ [ $dns(0).ip ] ] host $+($hget(%sock. [ $+ [ $dns(0).ip ] ],nick),!,$hget(%sock. [ $+ [ $dns(0).ip ] ],ident),@,$hget(cloak,$sock(%sock. [ $+ [ $dns(0).ip ] ]).ip))
  hadd -m %sock. [ $+ [ $dns(0).ip ] ] realhost $+($iif($hget(%sock. [ $+ [ $dns(0).ip ] ],nick),$hget(%sock. [ $+ [ $dns(0).ip ] ],nick),*),!,$hget(%sock. [ $+ [ $dns(0).ip ] ],ident),@,$iif($raddress,$raddress,$sock(%sock. [ $+ [ $dns(0).ip ] ]).ip))
  if ($hget($hget(%sock. [ $+ [ $dns(0).ip ] ],nick),1).item) { hfree $hget(%sock. [ $+ [ $dns(0).ip ] ],nick) }
  hadd $sock(%sock. [ $+ [ $dns(0).ip ] ]).ip %sock. [ $+ [ $dns(0).ip ] ]
  if ($hget(%sock. [ $+ [ $dns(0).ip ] ],nick)) { hadd -m $hget(%sock. [ $+ [ $dns(0).ip ] ],nick) %sock. [ $+ [ $dns(0).ip ] ] }
  a.con %sock. [ $+ [ $dns(0).ip ] ]
  halt
}
#DNS end
alias m.ps {
  if (!$hfind(proxies,$1)) {
    hadd proxies $+(*@,$1) ( $+ $hget(settings,server) on $fulldate $+ ) (Open proxy found on your host ( $+ $2 $+ ). $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email)) $+ )
    hadd -m proxies $+(reason_,$+(*@,$1)) Open proxy found on your $iif($2,host $+($chr(40),$2,$chr(41),.),host.) $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email))
    hadd proxies $+(date_,$+(*@,$1)) $fulldate
    hadd proxies $+(nick_,$+(*@,$1)) $hget(settings,server)
    hsave proxies data\pmon.db
  }
  var %z = 1
  while ($hget(users,%z).item) {
    if ($sock($hget(users,%z).item).ip = $1) {
      sno g *** Global Notice -- Kill line active for $hget($hget(users,%z).item,nick) $chr(91) $+ $sock($hget(users,%z).item).ip $+ $chr(93)
      sockwrite -n $hget(users,%z).item $+(:,$hget(settings,server)) NOTICE $hget($hget(users,%z).item,nick) :*** You are banned from $hget(settings,serverdesc) $+($chr(40),Open proxy found on your $iif($2,host $+($chr(40),$2,$chr(41),.),host.) $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email)),$chr(41))
    squit $hget(users,%z).item Open proxy found on your $iif($2,host $+($chr(40),$2,$chr(41),.),host.) $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email)) | continue }
  inc %z }
  return
}
on 1:sockopen:q.*:{
  if (!$gettok($sockname,2-,46)) { sockclose $sockname | return }
  if ($sock($sockname)) {
    sockwrite -n $sockname GET $+(/cgi-bin/lookup.cgi?query=,$gettok($sockname,2-,46)) HTTP/1.1
    sockwrite -n $sockname Host: www.njabl.org
    sockwrite -n $sockname User-Agent: IPTracer/1.0 (Windows; U; Windows NT 5.1; en-US; rv:0.0.0.0) Newton/16430104 IPTracer/1.0 
    sockwrite -n $sockname Connection: keep-alive
    sockwrite $sockname $CRLF
  }
}
on 1:sockread:q.*:{ var %q = 1
  sockread %q 
  if (OPEN PROXY isin %q) || (A SPAM isin %q) || (LISTED AS isin %q) || (LISTED IN isin %q) && (DYNA !isin %q) {
    m.ps $gettok($sockname,2-,46)
    .timerem.ps1 $+ $gettok($sockname,2-,46) 1 2 m.ps $gettok($sockname,2-,46)
    .timerem.ps2 $+ $gettok($sockname,2-,46) 1 10 m.ps $gettok($sockname,2-,46)
    sockclose $sockname
    return
  }
return }
on *:SOCKREAD:pc.*:{
  var %pc = 1
  sockread %pc
  if ($gettok(%pc,2,32) = 400) || ($gettok(%pc,2,32) = 505) { 
    sockwrite -nt $sockname 1 5 1 0 1 liberty.dal.net:6667
  }
  if ($gettok(%pc,2,32) = 462) || ($gettok(%pc,2,32) = 404) || ($gettok(%pc,2,32) = 405) || ($gettok(%pc,2,32) = 503) || ($gettok(%pc,1,32) = ERROR) { p.ccc | sockclose $sockname | return }
  elseif ($gettok(%pc,2,32) = 200) || ($left(%pc,1) = $chr(58)) {
    if (!$hget(psock,$sock($sockname).ip)) {
      m.ps $sock($sockname).ip $sock($sockname).port
      sockclose $sockname
      unset %c.p.c. [ $+ [ $sock($sockname).ip ] ] %o.p.c. [ $+ [ $sock($sockname).ip ] ] %pp
      halt
    }
    if ($sock($hget(psock,$sock($sockname).ip))) { 
    sockwrite -n $hget(psock,$sock($sockname).ip) $+(:,$hget(settings,server)) NOTICE $hget($hget(psock,$sock($sockname).ip),nick) :*** You are banned from $hget(settings,serverdesc) $+($chr(40),Open proxy found on your host $+($chr(40),$sock($sockname).port,$chr(41),.) $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email)),$chr(41)) }
    squit $hget(psock,$sock($sockname).ip) Open proxy found on your host $+($chr(40),$sock($sockname).port,$chr(41),.) $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email))
    m.ps $sock($sockname).ip $sock($sockname).port
    sockclose $sockname
    unset %c.p.c. [ $+ [ $sock($sockname).ip ] ] %o.p.c. [ $+ [ $sock($sockname).ip ] ] %pp
    halt
  } 
  halt 
}
alias checkproxy {
  if (!$2) { unsetall | halt }
  if ($3 = NN) { set %nn. [ $+ [ $2 ] ] true }
  if ($hget(psock,$1)) hdel psock $1
  ;unset %c.p.c. [ $+ [ $1 ] ] %o.p.c. [ $+ [ $1 ] ]
  hadd -m psock $1 $2
  .timerpcc $+ $1 1 60 sockclose $+(pc.,$1,.*)
  if ($hfind(settings,check80)) { sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 80 }
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 808
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 1080
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 1520
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 1680
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 3128
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 3380
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 3513
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 4282
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 4480
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 4655
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 5252
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 5517
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 6588
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 7095
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 7212
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 7336
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 7621
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 7692
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8000
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8008
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8080
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8092
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8325
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8744
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 15236
  sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 29122
  set -u60 %o.p.c. [ $+ [ $1 ] ] $iif($hfind(settings,check80),27,26)
  return
}
alias -l p.ccc {
  inc %c.p.c. [ $+ [ $sock($sockname).ip ] ]
  if (%c.p.c. [ $+ [ $sock($sockname).ip ] ] = %o.p.c. [ $+ [ $sock($sockname).ip ] ]) {
    unset %c.p.c. [ $+ [ $sock($sockname).ip ] ] %o.p.c. [ $+ [ $sock($sockname).ip ] ] %pp
    if (!%nn. [ $+ [ $hget(psock,$sock($sockname).ip) ] ]) && ($hget(psock,$sock($sockname).ip)) {
      if ($sock($hget(psock,$sock($sockname).ip))) sockwrite -n $hget(psock,$sock($sockname).ip) NOTICE AUTH :*** Open proxy test successfully passed
      hdel psock $sock($sockname).ip
      unset %c.p.c. [ $+ [ $sock($sockname).ip ] ] %o.p.c. [ $+ [ $sock($sockname).ip ] ] %pp
    halt }
    unset %c.p.c. [ $+ [ $sock($sockname).ip ] ]
  }
halt }
on *:sockopen:pc.*:{
  if ($sockerr) {
    p.ccc
    sockclose $sockname
  halt }
  sockwrite -nt $sockname CONNECT irc.dal.net:6667 HTTP/1.0 $+ $CRLF $+ $CRLF
  sockwrite -nt $sockname $CRLF
  halt
}
on *:SOCKCLOSE:pc.*:{
  inc %c.p.c. [ $+ [ $sock($sockname).ip ] ]
}
alias -l chgnick {
  if ($sock($hget($1,1).item)) {
    var %change = $iif(:* iswm $2,$left($right($2,-1),$hget(settings,maxnicklen)),$left($2,$hget(settings,maxnicklen)))
    if ($hfind(sqline,%change)) {
      sockwrite -n $sockname $+(:,$hget(settings,server)) 432 $iif($hget($sockname,host),$hget($sockname,nick),*) %change :Erroneous Nickname ( $+ $gettok($hget(sqline,%change),3-,32) $+ )
      sno Q *** Sqline Rejection -- Forbidden nick %change from client $sock($sockname).ip $iif($hget($sockname,nick),[Current nick: $+($hget($sockname,nick),]))
      return
    }
    var %a 1
    while %a <= $hget(channels,0).item {
      var %x = 1
      while $hget($+(bans_,$hget(channels,%a).item),%x).item {
        if ($hget($+(bans_,$gettok($hget(channels,%a).item,1,32)),%x).item iswm $hget($sockname,host)) || ($gettok($hget($+(bans_,$hget(channels,%a).item),%x).item,1,33) = %change) || ($hget($+(bans_,$hget(channels,%a).item),%x).item iswm $hget($sockname,realhost)) || ($hget($+(bans_,$hget(channels,%a).item),%x).item iswm $+(*!*@,$sock($sockname).ip)) || ($hget($+(bans_,$hget(channels,%a).item),%x).item iswm $hget(xhost,$sockname)) { 
          sockwrite -n $sockname $+(:,$hget(settings,server)) 437 $hget($sockname,nick) $+(:,$hget(channels,%a).item) Cannot change nickname while banned on channel
          halt
        }
        inc %x
      }
      if ($hget(nickfprot,$hget(channels,%a).item)) { 
        if (%nickchgs. [ $+ [ $hget(channels,%a).item ] ] = $gettok($hget(nickfprot,$hget(channels,%a).item),1,32)) { 
        sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Please wait $gettok($hget(nickfprot,$hget(channels,%a).item),2,32) before changing your nick while on $hget(channels,%a).item (max. $gettok($hget(nickfprot,$hget(channels,%a).item),1,32) nickchanges in $gettok($hget(nickfprot,$hget(channels,%a).item),2,32) seconds) | return }
        inc %nickchgs. [ $+ [ $hget(channels,%a).item ] ]
        if (%nickchgs. [ $+ [ $hget(channels,%a).item ] ] = 1) {
        .timernickf $+ $hget(channels,%a).item 1 $gettok($hget(nickfprot,$hget(channels,%a).item),2,32) unset %nickchgs. [ $+ [ $hget(channels,%a).item ] ] }
      }
      if (!$hget($hget(channels,%a).item,$hget($1,1).item)) { inc %a | continue }
      var %b 1 | while %b <= $hget($hget(channels,%a).item,0).item {
        if ($sock($hget($hget(channels,%a).item,%b).item)) && ($hget($hget(channels,%a).item,%b).item != $hget($1,1).item) && (!%nc. [ $+ [ $hget($hget(channels,%a).item,%b).item ] ]) {
          sockwrite -n $hget($hget(channels,%a).item,%b).item : $+ $hget($hget($1,1).item,host) NICK %change
          var %s = $hget($hget(channels,%a).item,%b).item
        var %nc. [ $+ [ %s ] ] = true }
      inc %b }
    inc %a }
    sockwrite -n $hget($1,1).item : $+ $hget($hget($1,1).item,host) NICK %change
    .timerchgnick $+ $hget($1,1).item off
    if ($hfind(ircops,$hget($hget($1,1).item,nick))) {
      hdel ircops $1
      hadd ircops %change
    }
    if ($hget(rnicks,$+(secure_,$2)) = true) && ($sock($hget($1,1).item).ip != $hget(rnicks,$+(ip_,$2))) {
      sockwrite -n $hget($1,1).item $+(:,$hget(settings,server)) NOTICE $2 :This nicknamed is IP secured.
      .timerchgnick $+ $hget($1,1).item 1 0 CHGNICK $2 Gast $+ $r(1,999999)
      goto skipw
      return
    }
    if ($hfind(rnicks,$2) = $2) && ($hget($hget($1,1).item,loggedin) != $2) {
      sockwrite -n $hget($1,1).item $+(:,$hget(settings,server)) NOTICE $2 :NC: This nickname is registered and protected. If it is your nick
      sockwrite -n $hget($1,1).item $+(:,$hget(settings,server)) NOTICE $2 :nick, type /LOGIN %change password. $iif(!$hget($hget($1,1).item,loggedin),Otherwise) $iif($hget($hget($1,1).item,loggedin),after used /LOGOUT $hget($hget($1,1).item,loggedin) $+ . Otherwise))
      sockwrite -n $hget($1,1).item $+(:,$hget(settings,server)) NOTICE $2 :please choose a different nick.
      sockwrite -n $hget($1,1).item $+(:,$hget(settings,server)) NOTICE $2 :If you don't change your nick within 1 minute, I will change your nick.
      .timerchgnick $+ $hget($1,1).item 1 60 CHGNICK $2 Gast $+ $r(1,999999)
      :skipw
      hadd sqline $2
      hadd sqline $+(nick_,$2) $hget(settings,server)
      hadd sqline $+(reason_,$2) Being held for registered users
      hadd sqline $+(date_,$2) $fulldate
      .timerunsqline1 $+ $2 1 120 hdel sqline $2
      .timerunsqline2 $+ $2 1 120 hdel -w sqline $+(*_,$2)
    }
    if ($hfind(sqline,$2)) {
      hdel sqline $2
      hdel -w sqline $+(*_,$2)
    }
    if (%change) {
      hadd -m $hget($1,1).item host $+(%change,!,$gettok($hget($hget($1,1).item,host),2,33))
    hadd -m $hget($1,1).item nick %change }
    hdel nicks $1
    hadd nicks %change
    if ($hget($1,1).item && %change != $1) {
      hadd -m %change $hget($1,1).item
    hfree $1 }
    if ($hget($hget(%change,1).item,nick)) {
      sno N *** Nickchange Notice -- $1 ( $+ $gettok($hget($hget(%change,1).item,realhost),2,33) $+ ) has changed his/her nickname to %change
    }
  halt }
halt }
alias o.c {
  var %x = 1
  while ($hget(users,%x).item) {
    if (!$sock($hget(users,%x).item)) {
      .timerping* $+ $hget(users,%x).item off
      squit $hget(users,%x).item Lost connection to server
    }
  inc %x }
halt }
alias -l squit {
  if ($sock($1)) {
    sockwrite -n $1 ERROR :Closing link: $+($hget($1,nick),[,$iif($gettok($hget($1,realhost),2,64),$gettok($hget($1,realhost),2,64),$sock($1).ip),]) ( $+ $2- $+ )
  }
  else { .timerping* $+ $1 off }
  var %x = 1
  while ($hget(ircops,%x).item) && ($hget($1,realhost)) && ($hget($1,nick)) {
    if ($sock($hget($hget(ircops,%x).item,1).item)) {
      sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Disconnect Notice -- Client exiting: $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ ) $chr(91) $+ $2- $+ $chr(93)
    }
  inc %x }
  if (%pch. [ $+ [ $sock($sockname).ip ] ]) { unset %pch. [ $+ [ $sock($sockname).ip ] ] }
  if ($hget($sock($1).ip,logins)) {
    hdec $sock($1).ip logins
    hdel $sock($1).ip $1
  }
  if ($hfind($sock($1).ip,$hget($1,nick))) { hdel $sock($1).ip $hget($1,nick) }
  if ($hget($sock($1).ip,logins) < 0) hfree $sock($1).ip
  if ($sock($1)) sockclose $1
  if (%nn. [ $+ [ $1 ] ]) unset %nn. [ $+ [ $1 ] ]
  if ($hfind(users,$1)) hdel users $1 
  if ($hfind(snoi,$hget($1,nick))) hdel snoi $hget($1,nick)
  if ($hget($1,nick)) hdel nicks $hget($1,nick)
  if ($hfind(ircops,$hget($1,nick))) hdel ircops $hget($1,nick)
  if ($hfind(sqline,$hget($1,nick))) hdel sqline $hget($1,nick)
  if ($hget(sqline,$hget($1,loggedin))) hdel sqline $hget($1,loggedin)
  var %i 1 
  while %i <= $hget(channels,0).item {
    if ($hget($hget(channels,%i).item,$1)) {
      var %x 1 
      while %x <= $hget($hget(channels,%i).item,0).item {
        if ($sock($hget($hget(channels,%i).item,%x).item)) && (!%qc. [ $+ [ $hget($hget(channels,%i).item,%x).item ] ]) {
          sockwrite -n $hget($hget(channels,%i).item,%x).item $+(:,$hget($1,host)) QUIT $+(:,$2-)
          if ($hget($hget(channels,%i).item,%x).item) { var %qs = $hget($hget(channels,%i).item,%x).item | var %qc. [ $+ [ %qs ] ] = true }
        }
        inc %x
      }
      if ($hget($hget(channels,%i).item,users) <= 1) {
        if ($hfind(rchans,$hget(channels,%i).item)) { hadd -m rchans $+(lastused_,$hget(channels,%i).item) $fulldate }
        if (!$hfind(rchans,$hget(channels,%i).item)) && ($hget(channels,%i).item) {
          hdel -w topics $+(topic*,_,$hget(channels,%i).item)
          if ($hget(modes,$hget(channels,%i).item)) hdel modes $hget(channels,%i).item 
          if ($hget($+(bans_,$hget(channels,%i).item),0).item) hfree $+(bans_,$hget(channels,%i).item)
          if ($hget($+(excepts_,$hget(channels,%i).item),0).item) hfree $+(excepts_,$hget(channels,%i).item)
          if ($hget($+(invites_,$hget(channels,%i).item),0).item) hfree $+(invites_,$hget(channels,%i).item)
          hfree $hget(channels,%i).item
          hfree -w +*_ $+ $hget(channels,%i).item
          .timer 1 0 hdel channels $hget(channels,%i).item
        }
        if ($hfind($+(+z_,$hget(channels,%i).item),$1)) hdel $+(+z_,$hget(channels,%i).item) $1
        if ($hfind($+(+v_,$hget(channels,%i).item),$1)) hdel $+(+v_,$hget(channels,%i).item) $1
        if ($hfind($+(+h_,$hget(channels,%i).item),$1)) hdel $+(+h_,$hget(channels,%i).item) $1
        if ($hfind($+(+o_,$hget(channels,%i).item),$1)) hdel $+(+o_,$hget(channels,%i).item) $1
        if ($hfind($+(+a_,$hget(channels,%i).item),$1)) hdel $+(+a_,$hget(channels,%i).item) $1
        if ($hfind($+(+q_,$hget(channels,%i).item),$1)) hdel $+(+q_,$hget(channels,%i).item) $1
      }
      if ($hget($hget(channels,%i).item,$1)) hdel $hget(channels,%i).item $1 
      if ($hget($hget(channels,%i).item,users)) hdec $hget(channels,%i).item users 
    }
    inc %i
  }
  .timerpf $+ $1 $+ * off
  .timerchgnick $+ $1 off
  .timerping* $+ $1 off
  .timerpc $+ $1 off
  if ($hget($1,nick)) && ($hget($1,host)) && ($hget($1,realhost)) {
    hadd -m whowas_ $+ $hget($1,nick) host $hget($1,host)
    hadd -m whowas_ $+ $hget($1,nick) realhost $gettok($hget($1,realhost),2,64)
    hadd -m whowas_ $+ $hget($1,nick) realname $hget($1,realname)
    hadd -m whowas_ $+ $hget($1,nick) server $hget($1,server)
    hadd -m whowas_ $+ $hget($1,nick) serverdesc $hget($1,serverdesc)
    hadd -m whowas_ $+ $hget($1,nick) date $ctime
  }
  if ($hget(ircops,$1)) hdel ircops $1
  if ($hget($1,nick)) && ($hget($hget($1,nick),1).item) { hfree $hget($1,nick) }
  if ($hget($hget($1,loggedin))) {
    hdel $hget($1,loggedin) login
    hadd -m rnicks $+(quitmsg_,$hget($1,loggedin)) $2-
    hadd -m rnicks $+(lastseen_,$hget($1,loggedin)) $fulldate
  }
  if ($hget($1,0).item) hfree $1
  unset %i
  return
}
alias makeparams {
  if ($1 = +-) { unset %host %param* %chan
    return
  }
  if ($1 = -+) {
    unset %host %param* %chan
    return
  }
  if ($1 = --) {
    unset %host %param* %chan
    return
  }
  if ($1 = ++) {
    unset %host %param* %chan
    return
  }
  if ($1 = -) {
    unset %host %param* %chan
    return
  }
  if ($1 = +) {
    unset %host %param* %chan
    return
  }
  var %modes = $1, %z = 2, %pcount = 1, %y = 1
  if (%modes) && (%host) && (%y <= $hget(%chan,0).item) {
    while $hget(%chan,%y).item {
      if ($sock($hget(%chan,%y).item)) { 
        sockwrite -n $hget(%chan,%y).item $+(:,%host) MODE %chan $+(%+-,$iif(%t.modes,%t.modes,%modes)) %params
      }
      inc %y
    }
  }
  hsave modes data\chmodes.db
  unset %params %modes %chan %host %ov %ban %i
  return 
}
on *:SOCKOPEN:Enforcer:{
  sockwrite -n $sockname CLIENT $hget(enforcer,nick) 1 $ctime +S + $hget(enforcer,ident) $hget(enforcer,mask) 0 $+(LawEnforcement.,$gettok($hget(settings,server),2-,46)) * * $+(:,$hget(enforcer,name))
  sockwrite -n $sockname SQLINE $hget(enforcer,nick) Reserved for services
  hadd servers LawEnforcement. $+ $gettok($hget(settings,server),2-,46)
  halt
}
alias -l chgumode {
  if ($2) {
    if (!$istok(+ -,$left($2,1),32)) {
      unset %sockname
      cmd.fail $1
      return
    }
    var %i 2, %+- $left($2,1), %modes $left($2,1), %x
    :chgumode
    while $mid($2,%i,1) {
      if ($istok(+ -,$mid($2,%i,1),32)) {
        if (!%+-) {
          var %+- = $mid($2,%i,1)
        }
        var %modes = %modes $+ $mid($2,%i,1)
      }
      if ($mid($2,%i,1) !isincs $umodes) {
        sockwrite -n $1 $+(:,$hget(settings,server)) 501 $hget($1,nick) $mid($2,%i,1) :Unknown MODE bar
      }
      elseif ($istokcs(c x i S,$mid($2,%i,1),32)) && ($+(*,$mid($2,%i,1),*) !iswmcs $hget($1,modes)) && (%+- == +) {
        if ($mid($2,%i,1) === x) {
          if ($hget(xhost,$1)) {
            hadd -m $1 host $hget(xhost,$1)
          }
          if ($hget(xhost,$1)) {
            hdel xhost $1
          }
        }
        var %modes = $+(%modes,$mid($2,%i,1))
        hadd $1 modes $+($hget($1,modes),$mid($2,%i,1)) 
      }
      if ($istokcs(c x i S,$mid($2,%i,1),32)) && ($+(*,$mid($2,%i,1),*) iswmcs $hget($1,modes)) && (%+- == -) {
        if ($mid($2,%i,1) === x)  {
          hadd -m xhost $1 $hget($1,host)
          hadd -m $1 host $hget($1,realhost)
        }
        var %modes = $+(%modes,$mid($2,%i,1))
        hadd $1 modes $removecs($hget($1,modes),$mid($2,%i,1))
      }
      if ($4) {
        if ($mid($2,%i,1) === r) && (%+- = +) {
          hadd -m $1 modes $+($hget($1,modes),$mid($2,%i,1))
          var %modes = $+(%modes,$mid($2,%i,1))
        }
        if ($mid($2,%i,1) === r) && (%+- = -) {
          hadd -m $1 modes $+($removecs($hget($1,modes),$mid($2,%i,1)))
          var %modes = $+(%modes,$mid($2,%i,1))
        }
      }
      if ($istokcs(a c h l s q x w A C H I N O P T W X Z,$mid($2,%i,1),32)) && ($+(*,$mid($2,%i,1),*) !iswmcs $hget($1,modes)) && (%+- == +) { 
        if (!$hget($1,ircop)) && ($5 !== @) {
          inc %i
          goto chgumode
        }
        if ($istokcs(a A C X N T Z P,$mid($2,%i,1),32)) && ($+(*,$mid($2,%i,1),*) !iswmcs $readini(opers.conf,$hget($sockname,ologin),modes)) {
          inc %i
          continue
        }
        if ($mid($2,%i,1) === H) {
          .timer 1 0 hadd -m hhost $1 $hget($1,host)
        hadd -m $1 host $hget(hhost,$1) }
        hadd $1 modes $hget($1,modes) $+ $mid($2,%i,1)
        var %modes = $+(%modes,$mid($2,%i,1))
        hdel ircops $1
      }      
      if ($mid($2,%i,1) === o) {
        hadd ircops $hget($1,nick)
        hadd $1 ircop true
        hadd $1 olvl 2
      }
      if ($mid($2,%i,1) === O) && (*o* !iswmcs $hget($1,modes)) {
        hadd ircops $hget($1,nick)
        hadd $1 ircop true
        hadd $1 olvl 1
      }
      if ($mid($2,2,1) === s) && ($3) && (!$hfind(nicks,$3)) {
        var %x = 1 | while $mid($3,%x,1) {
          if ($istok(+ -,$mid($3,%x,1),32)) {
            set -u0 %+- $mid($3,%x,1)
          set -u0 %modes $+(%modes,$mid($2,%i,1)) }
          if (%+- == +) && ($istokcs(a c f g i j k n o s w C F I N Q S,$mid($3,%x,1),32)) && ($+(*,$mid($3,%x,1),*) !iswmcs $hget($1,snomasks)) {
            if ($mid($3,%x,1) === i) && ($4) {
              hadd -m snoi $1 $4
            }
            hadd $1 snomasks $+(+,$remove($hget($1,snomasks),+,-),$remove($mid($3,%x,1),+,-))
            var %snomasks = %snomasks $+ $remove($mid($3,%x,1),+,-)
          inc %x }
          if (%+- == -) && ($istokcs(a c f g i j k n o s w C F I N S,$mid($3,%x,1),32)) && ($+(*,$mid($3,%x,1),*) iswmcs $hget($1,snomasks)) {
            if ($mid($3,%x,1) === i) && ($hget(snoi,$1)) {
              hdel snoi $1
            }
            hadd $1 snomasks $+(+,$removecs($hget($1,snomasks),$remove($mid($3,%x,1),+,-),-,+))
            var %-snomasks = $+(%-snomasks,$mid($3,%x,1)))
            inc %x
          }
          inc %x
        }
        if (!%snomasks) && (!%-snomasks) {
          return
        }
      }
      elseif ($istokcs(a c h l o s q x w A C H I N O P T W X Z,$mid($2,%i,1),32)) && ($+(*,$mid($2,%i,1),*) iswmcs $hget($1,modes)) && (%+- == -) {
        hadd $1 modes $removecs($hget($1,modes),$mid($2,%i,1))
        var %modes = %modes $+ $mid($2,%i,1)
        if ($mid($3,%x,1) === i) && ($hget(snoi,$1)) {
          hdel snoi $1
        }
        if ($mid($2,%i,1) === H) {
          hadd -m $1 host $hget(hhost,$1)
          hadd ircops $1
        }
        if ($mid($2,%i,1) === s) {
          if ($3) && ($istokcs(a c f g i j k n o s w A C F I N Q S,$mid($3,%x,1),32)) && ($+(*,$mid($3,%x,1),*) iswmcs $hget($1,snomasks)) {
            hadd $1 snomasks $+(+,$removecs($hget($1,snomasks),$remove($mid($3,%x,1),+,-),-,+))
            var %-snomasks = $+(%-snomasks,$mid($3,%x,1)))
            if (!$3) { 
              var %-snomasks = $hget($1,snomasks)
              hdel $1 snomasks
              var %+-s = true
            }
          }
        inc %x }
      inc %x } 
      if ($mid($2,%i,1) === o) && ($left($2,1) == -) {
        if (*O* !iswmcs $hget($1,modes)) {
          hdel ircops $hget($1,nick)
          hdel $1 ircop
          hdel $1 olvl
          hdel hhost $1
          hdel $1 ologin
        }
        var %x = 1
        while $mid($hget($1,omodes),%x,1) {
          hadd $1 modes + $+ $remove($removecs($hget($1,modes),$mid($hget($1,omodes),%x,1)),+,-)
          inc %x
        }
        var %omodes = $hget($1,omodes)
        hdel $1 omodes
      }
      inc %i
    }
  }
  if ($left(%modes,2) == ++) { %modes = $right(%modes,-1) }
  if ($left(%modes,2) == --) { %modes = $right(%modes,-1) }
  if ($left(%modes,2) == -+) { %modes = $right(%modes,-1) }
  if ($left(%modes,2) == +-) { %modes = $right(%modes,-1) }
  if ($right(%modes,1) = -) { %modes = $left(%modes,-1) }
  if ($right(%modes,1) = +) { %modes = $left(%modes,-1) }
  if ($len(%modes) > 1) || ($len(%omodes) > 1) && ($6 !== -) {
    if (!%snomasks) && (!%-snomasks) || (%+-s) sockwrite -n $1 $+(:,$iif($hfind(nicks,$4) || $4 == $hget(settings,server) && !%param,$4,$hget($1,nick))) MODE $hget($1,nick) $+(:,%+-,$iif(%omodes,$removecs(%omodes,+,-),$removecs(%modes,-,+)) $+ $iif(o isincs %modes,$removecs($hget($1,omodes),o,+,-))) $iif(%param,%param)
  }
  if ($5) && (%sockname) {
    sockwrite -n %sockname $+(:,$hget(settings,server)) 501 $hget(%sockname,nick) UMODE $hget($1,nick) $+(:,%+-,$iif(%omodes,$removecs(%omodes,+,-),$removecs(%modes,-,+)) $+ $iif(o isincs %modes,$removecs($hget($1,omodes),+,-,o))) $iif(%param,%param) ( $+ $hget($1,modes) $iif($hget($1,snomasks),$hget($1,snomasks),$+) $+ )
    unset %sockname
  }
  if (%snomasks) || (%-snomasks) {
    sockwrite -n $1 $+(:,$hget(settings,server)) 8 $hget($1,nick) Server notice mask ( $+ $iif(%-snomasks,$removecs($hget($1,snomasks),%-snomasks),$hget($1,snomasks)) $+ )
  }
  unset %x %i
  return
}
alias -l wops {
  var %x = 1
  while $hget(users,%x).item {
    if ($1 != 0) && (*w* !iswmcs $hget($hget(users,%x).item,snomasks)) {
      inc %x
      continue
    }
    sockwrite -n $hget(users,%x).item $+(:,$1) WALLOPS $hget($hget($hget(users,%x).item,1).item,nick) $2-
    inc %x
  }
  return
}
alias -l sno {
  var %z = 1 
  while $hget(ircops,%z).item {
    if ($1 != 0) && (* $+ $1 $+ * !iswmcs $hget($hget($hget(ircops,%z).item,1).item,snomasks)) {
      inc %z
      continue
    }
    var %ircopsock = $hget($hget(ircops,%z).item,1).item
    if ($1 === i) {
      if ($hget(snoi,%ircopsock) == $9) {
        sockwrite -n $hget($hget(ircops,%z).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%z).item,1).item,nick) : $+ $2-
        inc %z
      }
      if (!$hget(snoi,%ircopsock)) {
        if ($sock($hget($hget(ircops,%z).item,1).item)) { sockwrite -n $hget($hget(ircops,%z).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%z).item,1).item,nick) : $+ $2- }
        inc %z
      }
    }
    else {
      if ($sock($hget($hget(ircops,%z).item,1).item)) { 
        sockwrite -n $hget($hget(ircops,%z).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%z).item,1).item,nick) : $+ $2-
      }
    }
    inc %z
  }
  inc %z
  return
}
alias -l rmk {
  var %x = 1
  while $hget(ircops,%x).item {
    if (*n* !iswmcs $hget($hget($hget(ircops,%x).item,1).item,snomasks)) {
      inc %x
      continue
    }
    if ($2 = k) {
      sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Removed temporary K:line $1 (set by $hget(klines,nick_ $+ $1) on $hget(klines,date_ $+ $1) with reason: $hget(klines,reason_ $+ $1) $+ ) [has been expired]
      hdel klines $1
      hdel -w klines $+(*_,$1)
      hsave klines data\klines.db
      return
    }
    if ($2 = e) {
      sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Removed temporary E:line $1 (set by $hget(elines,nick_ $+ $1) on $hget(elines,date_ $+ $1) with reason: $hget(elines,reason_ $+ $1) $+ ) [has been expired]
      hdel elines $1
      hdel -w elines $+(*_,$1)
      hsave elines data\elines.db
      return
    }
    if ($2 = s) {
      sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Removed temporary Shun $1 (set by $hget(shuns,nick_ $+ $1) on $hget(shuns,date_ $+ $1) with reason: $hget(shuns,reason_ $+ $1) $+ ) [has been expired]
      hdel shuns $1
      hdel -w shuns $+(*_,$1)
      hsave shuns data\shuns.db
      return
    }
    if ($2 = z) {
      hdel zlines $1
      hdel -w zlines $+(*_,$1)
      hsave zlines data\zlines.db
      sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Removed temporary Z:line $1 (set by $hget(zlines,nick_ $+ $1) on $hget(zlines,date_ $+ $1) with reason: $hget(zlines,reason_ $+ $1) $+ ) [has been expired]
      return
    }
    inc %x
  }
  return
}
alias -l spart {
  var %i 1
  while (%i <= $calc($count($2,$chr(44)) + 1)) {
    if ($left($gettok($gettok($2,%i,44),1,32),1) = $chr(35)) || ($left($gettok($gettok($2,%i,44),1,32),1) = $chr(43)) {
      if ($hget($gettok($gettok($2,%i,44),1,32),$1)) {
        if ($hget($gettok($gettok($2,%i,44),1,32),$1) = .i) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($2-,%i,44) :You are invisible on channel $gettok($2-,%i,44) $+ . To undo, type: /INVISIBLE $+(-,$gettok($2-,%i,44)) | return }
        if ($hget($gettok($gettok($2,%i,44),1,32),users) > 1) {
          var %x 1
          while %x <= $hget($gettok($2,%i,44),0).item { 
            if ($sock($hget($gettok($2,%i,44),%x).item)) {
            sockwrite -n $hget($gettok($2,%i,44),%x).item : $+ $hget($1,host) PART $hfind(channels,$gettok($2,%i,44)) $3- }
            hsave modes data\chmodes.db
          inc %x }
          hdel $gettok($2,%i,44) $1
          hdel $1 $gettok($2,%i,44)
          hdec $gettok($2,%i,44) users
        }
        else {
          hfree $gettok($2,%i,44)
          sockwrite -n $1 $+(:,$hget($1,host)) PART $hfind(channels,$gettok($2,%i,44)) $3- 
          hfree -w $+(+*_,$gettok($2,%i,44))
          hsave modes data\chmodes.db
          if ($hfind(rchans,$gettok($2,%i,44))) { hadd -m rchans $+(lastused_,$gettok($2,%i,44)) $fulldate }
          if (!$hfind(rchans,$gettok($2,%i,44))) {
            hdel channels $gettok($2,%i,44)
            hdel modes $gettok($2,%i,44)
            hdel -w topics $+(topic*,_,$gettok($2,%i,44))
            hsave topics data\topics.db
            hsave modes data\chmodes.db
            if ($hget($+(bans_,$gettok($2,%i,44)),0).item) { hfree $+(bans_,$gettok($2,%i,44)) }
          }
        } 
      }
      else {
        sockwrite -n $1 $+(:,$hget(settings,server)) 442 $hget($1,nick) $gettok($2,%i,44) :You're not on that channel
        inc %x
        return 
      }
    }
    else {
      sockwrite -n $1 $+(:,$hget(settings,server)) 403 $hget($1,nick) $gettok($2,%i,44) :is not a valid channel
      inc %x
      return
    }
    if ($hfind($+(+z_,$gettok($2,%i,44)),$1)) hdel $+(+z_,$gettok($2,%i,44)) $1
    if ($hfind($+(+v_,$gettok($2,%i,44)),$1)) hdel $+(+v_,$gettok($2,%i,44)) $1
    if ($hfind($+(+h_,$gettok($2,%i,44)),$1)) hdel $+(+h_,$gettok($2,%i,44)) $1
    if ($hfind($+(+o_,$gettok($2,%i,44)),$1)) hdel $+(+o_,$gettok($2,%i,44)) $1
    if ($hfind($+(+a_,$gettok($2,%i,44)),$1)) hdel $+(+a_,$gettok($2,%i,44)) $1
    if ($hfind($+(+q_,$gettok($2,%i,44)),$1)) hdel $+(+q_,$gettok($2,%i,44)) $1
    if ($3 != SAPART:) sno j *** Join/Part Notice -- $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ ) has left $iif($hfind(channels,$gettok($2,%i,44)),$hfind(channels,$gettok($2,%i,44)),$gettok($2,%i,44)) $iif($3,( $+ $3- $+ ))
    if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
      var %z = 1
      while $hget($gettok($2,%i,44),%z).item {
        if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
          sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) has left $gettok($2,%i,44)
        }
        inc %z
      }
    }

    inc %i
  }
  unset %i
  return 
}
alias -l smode {
  if (%ov) { goto smodend }
  if (!$hfind($+(+h_,$2),$1)) && (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
    if (!$hget($1,ircop)) {
      sockwrite -n $1 $+(:,$hget(settings,server)) 482 $hget($1,nick) $2 :Don't you miss your @, $+($hget($1,nick),?)
      return 
    }
    if ($hget($1,ircop)) && (*v* !iswmcs $hget($1,flags)) {
      sockwrite -n $1 $+(:,$hget(settings,server)) 482 $hget($1,nick) $2 :Don't you miss your @, $+($hget($1,nick),?)
      return
    }
  }
  if (!$istok(+ -,$left($3,1),32)) {
    sockwrite -n $1 $+(:,$hget(settings,server)) 501 $hget($1,nick) :You must specify + or - for your modes
    return
  }
  :smodend
  unset %modes %t.modes
  var %i 2, %+- $left($3,1), %modes $left($3,1), %pcount 4
  while $mid($3,%i,1) {
    if ($istok(+ -,$mid($3,%i,1),32)) {
      set %+- $mid($3,%i,1)
    var %modes = %modes $+ $mid($3,%i,1) }
    if ($mid($3,%i,1) === r) && (!%ov) {
      sockwrite -n $1 $+(:,$hget(settings,server)) 501 $hget($1,nick) :Mode bar +r may only be set by servers
      set %modes $removecs(%modes,r)
      inc %i
      continue
    }
    if ($len($remove(%modes,+,-)) = 25) {
      var %m = 1, %mrc = 0
      while ($mid(%modes,%m,1)) {
        if ($mid(%modes,%m,1) != +) || ($mid(%modes,%m,1) != -) { inc %mrc }
        inc %m
      }
      set %modes $left(%modes,%mrc)
      set %params $gettok(%params,1-25,32)
    goto mend }
    elseif ($mid($3,%i,1) === i) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) }
    }
    elseif ($mid($3,%i,1) === i) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === V) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === V) && (!$ [ $+ [ %pcount ] ]) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === S) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === S) && (!$ [ $+ [ %pcount ] ]) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === m) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === m) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === n) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === n) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === r) && (%+- == +) && (%ov) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === r) && (%+- == -) && (%ov) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === N) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === N) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === R) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === R) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === s) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === s) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
    set %modes $+(%modes,$mid($3,%i,1)) } }
    elseif ($mid($3,%i,1) === t) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === t) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === p) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    if ($mid($3,%i,1) === p) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) }
    }
    elseif ($mid($3,%i,1) === O) && (!$ [ $+ [ %pcount ] ]) && (%+- == +) {
      if (!$hget($1,ircop)) {
        sockwrite -n $1 $+(:,$hget(settings,server)) 481 $hget($1,nick) :Permission denied - You are not an IRC Operator
      return }
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === O) && (!$ [ $+ [ %pcount ] ]) && (%+- == -) {
      if (!$hget($1,ircop)) {
        sockwrite -n $1 $+(:,$hget(settings,server)) 481 $hget($1,nick) :Permission denied - You are not an IRC Operator
      return }
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      set %modes $+(%modes,$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === k) && ($ [ $+ [ %pcount ] ]) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
        set %modes $+(%modes,$mid($3,%i,1))
        hadd data $+(key_,$2) $ [ $+ [ %pcount ] ] | set %params %params $ [ $+ [ %pcount ] ]
        inc %pcount
      hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1)) }
    }
    elseif ($mid($3,%i,1) === k) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $hget(data,$+(key_,$2))
        inc %pcount
        hdel data $+(key_,$2)
      hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1)) } 
    }
    elseif ($mid($3,%i,1) === l) && (%+- == +) {
      if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) && ($ [ $+ [ %pcount ] ] isnum) {
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $ [ $+ [ %pcount ] ]
        if (*k* iswmcs %modes) set %modes $+($removecs(%modes,k,l),$mid($3,%i,1),k)
        hadd data $+(limit_,$2) $ [ $+ [ %pcount ] ]
        inc %pcount
      hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1)) }
    }
    elseif ($mid($3,%i,1) === l) && (%+- == -) {
      if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $hget($2,limit)
        inc %pcount
        hdel $2 limit
      hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1)) }
    }
    elseif ($mid($3,%i,1) === f) && ($gettok($ [ $+ [ %pcount ] ],3,58) isnum) && ($gettok($ [ $+ [ %pcount ] ],1,58) isnum) && (%+- == +) {
      if (!$hget(joinfprot,$2)) && ($gettok($ [ $+ [ %pcount ] ],2,58) === j) {
        hadd -m $2 jfloodp $ [ $+ [ %pcount ] ] 
        hadd -m joinfprot $2 $gettok($ [ $+ [ %pcount ] ],1,58) $gettok($ [ $+ [ %pcount ] ],3,58)
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $ [ $+ [ %pcount ] ]
        inc %pcount
        hadd modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)),$mid($3,%i,1))
      }
      if (!$hget(msgfprot,$2)) && ($gettok($ [ $+ [ %pcount ] ],2,58) === m) {
        hadd -m $2 mfloodp $ [ $+ [ %pcount ] ] 
        hadd -m msgfprot $2 $gettok($ [ $+ [ %pcount ] ],1,58) $gettok($ [ $+ [ %pcount ] ],3,58)
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $ [ $+ [ %pcount ] ] | inc %pcount
        hadd modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)),$mid($3,%i,1))
      }
      if (!$hget(noticefprot,$2)) && ($gettok($ [ $+ [ %pcount ] ],2,58) === N) {
        hadd -m $2 n2floodp $ [ $+ [ %pcount ] ] 
        hadd -m noticefprot $2 $gettok($ [ $+ [ %pcount ] ],1,58) $gettok($ [ $+ [ %pcount ] ],3,58)
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $ [ $+ [ %pcount ] ] | inc %pcount
        hadd modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)),$mid($3,%i,1))
      }
      if (!$hget(nickfprot,$2)) && ($gettok($ [ $+ [ %pcount ] ],2,58) === n) {
        hadd -m $2 nfloodp $ [ $+ [ %pcount ] ] 
        hadd -m nickfprot $2 $gettok($ [ $+ [ %pcount ] ],1,58) $gettok($ [ $+ [ %pcount ] ],3,58)
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $ [ $+ [ %pcount ] ] | inc %pcount
        hadd -m modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)),$mid($3,%i,1))
      }
    }
    elseif ($mid($3,%i,1) === f) && (%+- == -) {
      if ($hget(joinfprot,$2)) && ($ [ $+ [ %pcount ] ] === j) {
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $hget($2,jfloodp)
        inc %pcount | hdel $2 jfloodp
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      hdel joinfprot $2 }
      if ($hget(msgfprot,$2)) && ($ [ $+ [ %pcount ] ] === m) {
        set %modes $+(%modes,$mid($3,%i,1)) | set %params %params $hget($2,mfloodp)
        inc %pcount
        hdel $2 mfloodp
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      hdel msgfprot $2 }
      if ($hget(noticefprot,$2)) && ($ [ $+ [ %pcount ] ] === N) {
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $hget($2,n2floodp)
        inc %pcount
        hdel $2 n2floodp
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      hdel noticefprot $2 }
      if ($hget(nickfprot,$2)) && ($ [ $+ [ %pcount ] ] === n) {
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $hget($2,nfloodp)
        inc %pcount | hdel $2 nfloodp
        hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
      hdel nickfprot $2 }
    }
    if ($mid($3,%i,1) === b) && (%+- == +) {
      if (!$4) { var %x 1 | while %x <= $hget(bans_ $+ $2,0).item {
      sockwrite -n $1 $+(:,$hget(settings,server)) 367 $hget($1,nick) $2 $hget(bans_ $+ $2,%x).item $hget(bans_ $+ $2,%x).data | inc %x } | sockwrite -n $1 $+(:,$hget(settings,server)) 368 $hget($1,nick) $2 :End of Channel Ban List | unset %modes %params %pcount | return | halt }
      if (!$hfind($+(bans_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
        if ($hget($+(bans_,$2),0).item = 100) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 478 $hget($sockname,nick) $2 $makemask($ [ $+ [ %pcount ] ]) :Banlist is full. Max 100 bans | unset %modes %params %pcount | return }
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $makemask($ [ $+ [ %pcount ] ])
        hadd -m $+(bans_,$2) $makemask($ [ $+ [ %pcount ] ]) $iif(%ov,$hget(settings,server),$hget($1,nick)) $ctime
      inc %pcount }
      if ($hfind($+(bans_,$2),$+($makemask($ [ $+ [ %pcount ] ])))) { inc %pcount }
    }
    elseif ($mid($3,%i,1) === b) && (%+- == -) && ($ [ $+ [ %pcount ] ]) {
      if ($4) {
        if ($hfind($+(bans_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
          set %modes $+(%modes,$mid($3,%i,1))
          set %params %params $makemask($ [ $+ [ %pcount ] ])
          hdel $+(bans_,$2) $makemask($ [ $+ [ %pcount ] ])
        inc %pcount }
        if (!$hfind($+(bans_,$2),$makemask($ [ $+ [ %pcount ] ]))) { inc %pcount }
      }
    }
    if ($mid($3,%i,1) === e) && (%+- == +) {
      if (!$4) {
        var %x 1
        while %x <= $hget(excepts_ $+ $2,0).item {
          sockwrite -n $1 $+(:,$hget(settings,server)) 348 $hget($1,nick) $2 $hget(excepts_ $+ $2,%x).item $hget(excepts_ $+ $2,%x).data
          inc %x
        }
        sockwrite -n $1 $+(:,$hget(settings,server)) 349 $hget($1,nick) $2 :End of Channel Exception List
      unset %modes %params %pcount | return | halt }
      if (!$hfind($+(excepts_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
        if ($hget($+(excepts_,$2),0).item = 100) {
          sockwrite -n $sockname $+(:,$hget(settings,server)) 478 $hget($sockname,nick) $2 $makemask($ [ $+ [ %pcount ] ]) :Exceptlist is full. Max 100 excepts
        unset %modes %params %pcount | return }
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $makemask($ [ $+ [ %pcount ] ])
        hadd -m $+(excepts_,$2) $makemask($ [ $+ [ %pcount ] ]) $hget($1,nick) $ctime
        inc %pcount
      }
      if ($hfind($+(excepts_,$2),$+($makemask($ [ $+ [ %pcount ] ])))) {
        inc %pcount
      }
    }
    elseif ($mid($3,%i,1) === e) && (%+- == -) && ($ [ $+ [ %pcount ] ]) {
      if ($4) {
        if ($hfind($+(excepts_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
          set %modes $+(%modes,$mid($3,%i,1))
          set %params %params $makemask($ [ $+ [ %pcount ] ])
          hdel $+(excepts_,$2) $makemask($ [ $+ [ %pcount ] ])
        inc %pcount }
        if (!$hfind($+(excepts_,$2),$makemask($ [ $+ [ %pcount ] ]))) { inc %pcount }
      }
    }
    if ($mid($3,%i,1) === I) && (%+- == +) {
      if (!$4) { var %x 1 | while %x <= $hget(invites_ $+ $2,0).item {
          sockwrite -n $1 $+(:,$hget(settings,server)) 367 $hget($1,nick) $2 $hget(invites_ $+ $2,%x).item $hget(invites_ $+ $2,%x).data
        inc %x }
        sockwrite -n $1 $+(:,$hget(settings,server)) 368 $hget($1,nick) $2 :End of Channel Invite List
        unset %modes %params %pcount
        return
      halt }
      if (!$hfind($+(invites_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
        if ($hget($+(invites_,$2),0).item = 100) {
        sockwrite -n $sockname $+(:,$hget(settings,server)) 478 $hget($sockname,nick) $2 $makemask($ [ $+ [ %pcount ] ]) :Invitelist is full. Max 100 invites | unset %modes %params %pcount | return }
        set %modes $+(%modes,$mid($3,%i,1))
        set %params %params $makemask($ [ $+ [ %pcount ] ])
        hadd -m $+(invites_,$2) $makemask($ [ $+ [ %pcount ] ]) $hget($1,nick) $ctime
      inc %pcount }
      if ($hfind($+(invites_,$2),$+($makemask($ [ $+ [ %pcount ] ])))) { inc %pcount }
    }
    elseif ($mid($3,%i,1) === I) && (%+- == -) && ($ [ $+ [ %pcount ] ]) {
      if ($4) {
        if ($hfind($+(invites_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
          set %modes $+(%modes,$mid($3,%i,1))
          set %params %params $makemask($ [ $+ [ %pcount ] ])
          hdel $+(invites_,$2) $makemask($ [ $+ [ %pcount ] ])
        inc %pcount }
        if (!$hfind($+(invites_,$2),$makemask($ [ $+ [ %pcount ] ]))) { inc %pcount }
      }
    }
    elseif ($istokcs(O q a o v h z,$mid($3,%i,1),32)) && (%+- == +) {
      if ($ [ $+ [ %pcount ] ]) && (!$hfind(nicks,$ [ $+ [ %pcount ] ])) {
        sockwrite -n $1 $+(:,$hget(settings,server)) 401 $hget($1,nick) $ [ $+ [ %pcount ] ] :No such nick
        inc %pcount
        inc %x
        continue
      }
      if ($+(*,$replace($mid($3,%i,1),z,-,q,*,a,:,o,@,h,%,v,+),*) iswm $hget($2,$hfind(nicks,$ [ $+ [ %pcount ] ]))) {
        inc %i
      continue }
      if ($mid($3,%i,1) === v) && ($ [ $+ [ %pcount ] ]) {
        if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
          inc %i
          inc %pcount
        continue }
        if (!$hfind($+(+h_,$2),$1)) && (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
          if (!$hget($sockname,ircop)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount | continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i
            inc %pcount
            continue
          }
        }
        hadd -m +v_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
        if (!$hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+ }
        set %modes $+(%modes,$mid($3,%i,1))
        %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === h) && ($ [ $+ [ %pcount ] ]) {
        if (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
          if (!$hget($sockname,ircop)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount | continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount | continue
          }
        }
        if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | continue }
        hadd -m +h_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
        if (!$hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd $2 $hget($ [ $+ [ %pcount ] ],1).item . $+ % }
        if (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd $2 $hget($ [ $+ [ %pcount ] ],1).item . $+ % }
        if (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd $2 $hget($ [ $+ [ %pcount ] ],1).item . $+ % }
        set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === o) && ($ [ $+ [ %pcount ] ]) {
        if (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
          if (%ov) { goto giveo | return }
          if (!$hget($sockname,ircop)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount | continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount | continue
          }
        }
        :giveo
        if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | continue }
        hadd -m +o_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
        if ($2 = $hget(settings,helpchan)) && (h !isincs $hget($hget($ [ $+ [ %pcount ] ],1).item,modes)) { chgumode $hget($ [ $+ [ %pcount ] ],1).item +h $2 0 - - } 
        if (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd $2 $hget($ [ $+ [ %pcount ] ],1).item .@ }
        set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === a) && ($ [ $+ [ %pcount ] ]) {
        if (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
          if (!$hget($sockname,ircop)) {
            inc %i | inc %pcount | continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            inc %i | inc %pcount | continue
          }
        }
        if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | continue }
        hadd -m +a_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
        if (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a) }
        set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === q) && ($ [ $+ [ %pcount ] ]) {
        if (%ov) { goto giveq | return }
        if (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) && (!$hget($sockname,ircop)) {
          inc %i | inc %pcount | continue
        }
        if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
          inc %i | inc %pcount | continue
        }
        :giveq
        if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | continue }
        hadd -m +q_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q)
        set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === O) && ($ [ $+ [ %pcount ] ]) {
        if (!$hget($1,ircop)) {
          sockwrite -n $1 $+(:,$hget(settings,server)) 481 $hget($1,nick) :Permission denied - You are not an IRC Operator
        return }
        if ($hfind($+(+O2_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | continue }
        hadd -m +O2_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
        set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === z) && ($ [ $+ [ %pcount ] ]) {
        if ($hfind($+(+z_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | return }
        if (!$hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+O2_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
          if (!$hget($sockname,ircop)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount | continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount | continue
          }
          hadd -m +z_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
          if (!$hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .-
          if (!$hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .-
          if (!$hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .-
          if (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .-
          if (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .-
          set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
        inc %pcount }
      }
    }
    elseif ($istokcs(O q a o v h z,$mid($3,%i,1),32)) && (%+- == -) {
      if ($ [ $+ [ %pcount ] ]) && (!$hfind(nicks,$ [ $+ [ %pcount ] ])) {
        sockwrite -n $1 $+(:,$hget(settings,server)) 401 $hget($1,nick) $ [ $+ [ %pcount ] ] :No such nick
        inc %pcount | inc %x
      continue }
      if ($+(*,$replace($mid($3,%i,1),z,-,q,$ip_q,$ip_a,@,o,@,h,%,v,+),*) iswm $hget($2,$hfind(nicks,$ [ $+ [ %pcount ] ]))) {
      inc %i | continue }
      if $mid($3,%i,1) === v {
        if (!$hfind($+(+h_,$2),$1)) && (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
          if (!$hget($sockname,ircop)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount
            continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount
            continue
          }
        }
        if (!$hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | continue }
        hdel +v_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
        if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .% }
        if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .@ }
        if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a) }
        if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q) }
        set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === h) {
        if (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
          if (!$hget($sockname,ircop)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount
            continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount | continue
          }
        }
        if (!$hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | continue }
        hdel +h_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
        if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+ }
        if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .@ }
        if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a) }
        if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q) }
        set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === o) {
        if (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
          if (!$hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount | continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
            inc %i | inc %pcount | continue
          }
        }
        if (!$hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | continue }
        hdel +o_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
        if ($2 = $hget(settings,helpchan)) { chgumode $hget($ [ $+ [ %pcount ] ],1).item -h 0 $2 - - } 
        if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+ }
        if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .% }
        if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
          if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a)
        }
        if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
          if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q)
        }
        set %modes $+(%modes,$mid($3,%i,1))
        %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === a) {
        if (!$hfind($+(+a_,$2),$1) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1))) {
          if (!$hget($sockname,ircop)) {
            inc %i
            inc %pcount
            continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            inc %i
            inc %pcount
            continue
          }
        }
        if (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | continue }
        hdel +a_ $+ $2 $hget($4,1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
        if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+ }
        if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .% }
        if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .@ }
        if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
          if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q)
        }
        set %modes $+(%modes,$mid($3,%i,1))
        %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === q) {
        if (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
          if (!$hget($sockname,ircop)) {
            inc %i
            inc %pcount
            continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            inc %i
            inc %pcount
            continue
          }
        }
        if (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | continue }
        hdel +q_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
        hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
        if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+ }
        if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .% }
        if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .@ }
        if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
          if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a)
        }
        set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === O) {
        if (!$hget($1,ircop)) {
          sockwrite -n $1 $+(:,$hget(settings,server)) 481 $hget($1,nick) :Permission denied - You are not an IRC Operator
        return }
        if (!$hfind($+(+O2_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
          inc %i
          continue
        }
        hdel +O2_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
        set %modes $+(%modes,$mid($3,%i,1))
        %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
      elseif ($mid($3,%i,1) === z) {
        if (!$hfind($+(+z_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
          inc %pcount
          return
        }
        if (!$hfind($+(+o_,$2),$1)) &&  (!$hfind($+(+a_,$2),$1)) &&  (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
          if (!$hget($sockname,ircop)) {
            inc %i
            inc %pcount
            continue
          }
          if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
            inc %i
            inc %pcount
            continue
          }
        }
        hdel +z_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
        if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+
        if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .%
        if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .@
        if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
          if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a)
        }
        if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
          if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q)
        }
        set %modes $+(%modes,$mid($3,%i,1))
        %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
      inc %pcount }
    }
    inc %i
  }
  :mend
  var %i = 1
  if (%modes) {
    while %i <= $hget($2,0).item { 
      if ($sock($hget($2,%i).item)) {
        set %host $iif(%ov,$hget(settings,server),$hget($1,host))
        %chan = $2
      }
      inc %i
    }
    if ($right(%modes,1) = -) { %modes = $left(%modes,-1) }
    if ($right(%modes,1) = +) { %modes = $left(%modes,-1) }
    if ($left(%modes,2) == ++) { %modes = $right(%modes,-1) }
    if ($left(%modes,2) == --) { %modes = $right(%modes,-1) }
    if ($left(%modes,2) == -+) { %modes = $right(%modes,-1) }
    if ($left(%modes,2) == +-) { %modes = $right(%modes,-1) }
    makeparams %modes %params
    unset %ban %i
    return
  }
  return
}
alias -l skick {
  var %i 1
  if (*N* iswmcs $hget(modes,$2)) {
    var %z = 1
    while $hget($2,%z).item {
      if ($hfind($+(+o_,$2),$hget($2,%z).item)) || ($hfind($+(+a_,$2),$hget($2,%z).item)) || ($hfind($+(+q_,$2),$hget($2,%z).item)) { 
        if ($sock($hget($2,%z).item)) {
          sockwrite -n $hget($2,%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$2) $+(:,$3) ( $+ $gettok($hget($hget($3,1).item,host),2,33) $+ ) has been kicked off channel $2 ( $+ $iif($4,$4-,$hget($1,nick)) $+ )
        }
      }
    inc %z }
  }
  while (%i <= $hget($2,0).item) { 
    if ($sock($hget($2,%i).item)) {
      sockwrite -n $hget($2,%i).item : $+ $iif(%ov,$hget(settings,server),$hget($sockname,host)) KICK $2-3 $iif($4,$4-,$hget($1,nick))
    }
    inc %i
  }
  if ($hget($2,users) > 1) {
    hdec $2 users
    hdel $2 $hget($3,1).item
    hdel $hget($3,1).item $2
  }
  else {
    if (!$hfind(rchans,$2)) {
      hdel modes $2
      hdel channels $2
      hdel -w topics $+(topic*_,$2)
      if ($hget($+(bans_,$2),0).item) hfree $+(bans_,$2)
      hfree $2 
      hfree -w +*_ $2 
    }
  }
  if ($hfind($+(+z_,$2),$hget($3,1).item)) hdel $+(+z_,$2) $hget($3,1).item
  if ($hfind($+(+v_,$2),$hget($3,1).item)) hdel $+(+v_,$2) $hget($3,1).item
  if ($hfind($+(+h_,$2),$hget($3,1).item)) hdel $+(+h_,$2) $hget($3,1).item
  if ($hfind($+(+o_,$2),$hget($3,1).item)) hdel $+(+o_,$2) $hget($3,1).item
  if ($hfind($+(+a_,$2),$hget($3,1).item)) hdel $+(+a_,$2) $hget($3,1).item
  if ($hfind($+(+q_,$2),$hget($3,1).item)) hdel $+(+q_,$2) $hget($3,1).item
  unset %ov
  return
}
alias -l delchans { 
  var %x = 1
  while ($hget(rchans,%x).item) {
    %chan = $hget(rchans,%x).item
    if ($left($hget(rchans,%x).item,1) == $chr(35)) {
      if ($hget($1,loggedin) == $hget(rchans,$+(founder_,%chan))) {
        hsave rchans data\chans.db
        remini data\access.db $hget(rchans,%x).item
        remini data\akicks.db $hget(rchans,%x).item
        %ov = true
        smode $1 $hget(rchans,%x).item -r
        hdel -w rchans $+(*,$hget(rchans,%x).item,*)
      inc %x }
    }
  inc %x }
  delacc $1
}
alias -l delacc { 
  var %x = 1
  :while
  while ($hget(rchans,%x).item) {
    var %chan = $hget(rchans,%x).item
    if ($left(%chan,1) == $chr(35)) {
      var %chan = $hget(rchans,%x).item
      if ($readini(data\access.db,%chan,$hget($1,loggedin))) {
        remini data\access.db %chan $replace($hget($1,loggedin),[,*,],&)
        inc %x
      goto while }
    }
  inc %x }
  hdel $1 loggedin
  unset %loggedin. [ $+ [ $1 ] ] %x
  halt
}
alias send {
  if ($1 = -s) { var %x = $3 }
  else { var %x = $1 }
  while ($read($langdir,%x)) {
    if ($1 = -s) { sockwrite -n $2 $+(:,$hget(ircd,server)) $read($langdir,%x)
      inc %x
    }
    else {
      if ($sock($sockname)) sockwrite -n $sockname $+(:,$hget(ircd,server)) $read($langdir,%x)
      inc %x
    }
    if ($1 = -s) && (%x > $4) { break }
    elseif ($1 != -s) && (%x > $2) { break }
  }
}

Comments

Sign in to comment.
Y4kuzi   -  Jul 27, 2009

Anyone found any bugs? Please report to me

 Respond  
Y4kuzi   -  Jul 21, 2009

Done.

And I have disabled the user verification. =)

 Respond  
Cheiron   -  Jul 21, 2009

likewise i am awaiting activation code please :)

username cheiron

 Respond  
Y4kuzi   -  Jul 21, 2009

I have also activated some other accounts, so all accounts are now activated.

@ mr_president:

And this isn't a bot.

 Respond  
Y4kuzi   -  Jul 21, 2009

Yeah, I will activate your account :>

 Respond  
PuNkTuReD   -  Jun 04, 2009

hi i signed up on your site but it didnt send the activation email.
will you please activate my account?

username: PuNkTuReD

 Respond  
mr_president   -  Jun 03, 2009

Sorry for double posting but...
I think you should have included this in the BOTS section and included a couple of files such as a example config. it takes a little work to do that config the way it is now.

 Respond  
mr_president   -  Jun 03, 2009

Holy sh**.....
This looks awsome.
I havnt tried it yet but it looks great..
I will get back to you when i try it.

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.