integer handle;
integer channel;
integer isLive;
integer debug_mode;

string url;
string response;
string request;

key token;
key server;
key session;

list users;
list mailboxes;
list tokens;
list sessions;
list db;

integer avchan(key i){return (integer)("0x"+llGetSubString((string)i,0,7))+1337;}
key genSessionKey(key i){
  integer s=llListFindList(sessions,(list)i);if(s==-1){
    session=llGenerateKey();
  }else{
    session=llList2Key(sessions,s-1);
    sessions+=[i,s];
  }
  return session;
}

debug(string n,string m){//name,message
  if(!debug_mode)return;
  string o=llGetObjectName();
  llSetObjectName(n);
  llOwnerSay(m);
  llSetObjectName(o);
  string t=llGetUnixTime();
  logs+=[t+" - "+n+": "+m];
  return;
}

default{
  state_entry(){
    channel=88881118;
    handle=llListen(channel,"","","");
    llSensorRepeat("","",AGENT,96,TWO_PI,20);
  }
  sensor(integer i){
    do{
      key user=llDetectedKey(i);
      if(llListFindList(users,(list)user){
        return;
      }else{
        llRegionSayTo(user,avchan(user),"!ping");
      }
    }while(i>-1);
  }
  no_sensor(){
    
  }
}