OverviewFilesCommitsIssuesDocsReleasesPeers

keet-cli / deobfuscated / api / v2 / core / index.js

1027 lines · javascript ref:
const ScopeLock=require('scope-lock'),ReadyResource=require('ready-resource'),b4a=require('b4a'),{
  KeetMethod}
=require('../base'),ChangeEvents={
  'RoomChanged':0x1,'RoomChatChanged':0x2,'RoomDigestChanged':0x3,'RoomConfigChanged':0x4,'RoomMemberChanged':0x5,'RoomDeviceChanged':0x6,'RoomReactionsChanged':0x7,'RoomStatsChanged':0x8,'RoomJoinRequestsChanged':0x9,'PairingChanged':0xa},WantEvents={
  'Identity':0x64,'Pairing':0x65,'Lobby':0x66,'Chat':0x67,'Reactions':0x68,'Members':0x69},UnwantEvents={
  'Identity':0xc8,'Pairing':0xc9,'Lobby':0xca,'Chat':0xcb,'Reactions':0xcc,'Members':0xcd}
;
class Tracker{
  constructor(_0x234e15){
    _0x4ad2ca={
      _0x4b4eea:0x28a},_0x53dca7={
      _0x16e6e2:0x221}
    ;
    this.coreAPI=_0x234e15,this.keet=_0x234e15.keet;
    this.view=_0x234e15.view,this.rpc=_0x234e15.rpc,this.active=![],this._queue=[];
    this._lock=new ScopeLock({'debounce':!![]});
  }
._isTracking(_0x1a90cb,_0x3d1ab8){
  return![];
}
async._process(_0x55b5d9,_0x3675f9){
}
async._bump(){
  _0x4706a0={
    _0x3a689d:0x1bb},_0x52376d={
    _0x5626df:0xaa,_0x46cb22:0x1f1},_0x1654e2=await this._lock.lock();
  if(!_0x1654e2)return;
  try{
    const _0x35d505=[...this._queue];
    this._queue=[];
    for(const {type:_0x1e5a66,event:_0x2fb0e1}of _0x35d505){
      await this._process(_0x1e5a66,_0x2fb0e1);
    }
}finally{
this._lock.unlock();
}
}
async.bump(){
  _0x10ec7b={
    _0xd06a3c:0x1d8,_0x488b23:0xdf},_0x3baddc={
    _0x4180fc:0x17a,_0x271cfe:0xa9,_0x59a504:0xc5}
  ;
  try{
    await this._bump();
  }catch(_0x5d8ae9){
  this.keet.onerror(_0x5d8ae9);
}
}
.dispatch(_0x4336a4,_0x535efe){
  _0x2e68c6={
    _0x3fa179:0xc7,_0x12807e:0x2f2},_0x44136a={
    _0x3d787a:0xe0,_0x17d291:0x5f9}
  ;
  const _0x4f287d=this._isTracking(_0x4336a4,_0x535efe);
  if(!_0x4f287d)return;
  this._queue.push({'type':_0x4336a4,'event':_0x535efe});
  this.bump();
}
}
class IdentityTracker extends Tracker{
  ._isTracking(_0x362e27,_0x46ca38){
    _0x25c1bf={
      _0x505445:0x2a,_0x41fa60:0x1d8,_0x26311d:0x3cf},_0x3df34b={
      _0x5cd3d5:0x1a3,_0x3a2195:0x1e3,_0xd2ac57:0x3e8}
    ;
    switch(_0x362e27){
      case WantEvents.Identity:return!![];
      case UnwantEvents.Identity:return!![];
      case ChangeEvents.RoomMemberChanged:return this.active&&_0x46ca38.roomInfo.status.isPrivateProfile;
      case ChangeEvents.RoomDeviceChanged:return this.active&&_0x46ca38.roomInfo.status.isPrivateProfile;
      default:return![];
    }
}
async._process(_0x49478c,_0x300c00){
  _0x5b9a9b={
    _0x2bbd82:0x16f,_0x5f1bee:0x189,_0x247ee2:0xbf},_0x2e4f7e={
    _0x3ac74b:0x128}
  ;
  switch(_0x49478c){
    case WantEvents.Identity:this.active=!![];
    return this._onReset(_0x300c00);
    case UnwantEvents.Identity:this.active=![];
    return null;
    case ChangeEvents.RoomMemberChanged:return this._onRoomMemberChanged(_0x300c00.value);
    case ChangeEvents.RoomDeviceChanged:return this._onRoomDeviceChanged(_0x300c00.value);
    default:return null;
  }
}
async._onReset({clock:_0x4eecad}={}){
  _0x38cc0e={
    _0x1ed31b:0xc2,_0x566963:0x212},_0x4715eb={
    _0x47bc93:0x2d,_0x238631:0x122},[_0x2a12cc,_0x108955,_0x2cc726]=await Promise.all([this.keet.local.get("@local/identity"),this.keet.privateProfile.db.findOne("@keet/members"),this.keet.privateProfile.db.find("@keet/devices").toArray()]),_0x35f82c=_0x2a12cc.status,_0x670ffe=_0x108955.key;
  this.view.members.add(_0x108955);
  const _0xc69d17=[];
  for(const _0x6fcc53 of _0x2cc726){
    _0xc69d17.push(_0x6fcc53.key),this.view.devices.add(_0x6fcc53);
  }
this.view.identity.onReset({'memberKey':_0x670ffe,'deviceKeys':_0xc69d17,'status':_0x35f82c});
if(_0x4eecad>0x0)this.rpc.coreHaveIdentity({'clock':_0x4eecad});
}
._onRoomMemberChanged(_0x412b1e){
  _0xfe9fce={
    _0x282bf2:0x1c1,_0x4d2f8b:0xd3,_0x41d5e3:0x321},_0x4f6c50={
    _0x206af9:0x151,_0x1017eb:0x16b,_0x50cf03:0x365}
  ;
  this.view.members.add(_0x412b1e),this.rpc.coreIdentityMember({'memberKey':_0x412b1e.key});
}
._onRoomDeviceChanged(_0x141f11){
  _0x36099b={
    _0x54c634:0x1d7,_0x570396:0x100},_0x5d236c={
    _0x4ce56e:0x162}
  ;
  this.view.devices.add(_0x141f11),this.rpc.coreIdentityDevice({'deviceKey':_0x141f11.key});
}
}
class PairingTracker extends Tracker{
  ._isTracking(_0x27ec83,_0x253a2b){
    _0x453078={
      _0x189f8e:0x151,_0x1c8a98:0x1b7,_0x4fccfe:0x4bd},_0x43f492={
      _0x28d4df:0x8,_0x3b3fd8:0x407}
    ;
    switch(_0x27ec83){
      case WantEvents.Pairing:return!![];
      case UnwantEvents.Pairing:return!![];
      case ChangeEvents.RoomChanged:return this.active&&_0x253a2b.roomId===this.keet.privateProfile.id;
      case ChangeEvents.RoomJoinRequestsChanged:return this.active&&_0x253a2b.roomId===this.keet.privateProfile.id;
      default:return![];
    }
}
._process(_0x293cbc,_0x5ddfb0){
  _0x346660={
    _0x272577:0x1ae,_0x26c555:0x88,_0xab88d2:0x33a},_0x3c944b={
    _0x2464fb:0x1b4,_0x5a30bd:0x8d,_0x132109:0x5f2}
  ;
  switch(_0x293cbc){
    case WantEvents.Pairing:this.active=!![];
    return this._onReset(_0x5ddfb0);
    case UnwantEvents.Pairing:this.active=![];
    return null;
    case ChangeEvents.RoomChanged:return this._onPrivateProfileChanged(_0x5ddfb0);
    case ChangeEvents.RoomJoinRequestsChanged:return this._onPrivateProfileChanged(_0x5ddfb0);
    default:return null;
  }
}
._onPrivateProfileChanged(_0x450842){
  _0x289bd1={
    _0x4580ef:0x10e,_0xcdecb1:0x130,_0xc4ad05:0x1e3}
  ;
  return this._onReset({'clock':0x0});
}
async._onReset({clock:_0x535edd}){
  _0x54a685={
    _0x3570f9:0x4e},_0x4178c6={
    _0x3b3b6e:0x23,_0x2de7e7:0x111,_0x55bccf:0x530}
  ;
  const [_0x45124d,_0x419b62]=await Promise.all([this.keet.privateProfile.db.find("@keet-private-id/pending-invitations").toArray(),this.keet.privateProfile.db.find("@keet/join-requests").toArray()]);
  this.rpc.corePairingReset({'pendingInvitations':_0x45124d,'identityJoinRequests':_0x419b62});
  if(_0x535edd>-0x411c)this.rpc.coreHavePairing({'clock':_0x535edd});
}
}
class LobbyTracker extends Tracker{
  constructor(_0x3eebae){
    _0x2355b0={
      _0x1714a0:0x188,_0x335627:0xa6,_0x260820:0x4bf},_0x3ce0d1={
      _0x229858:0x9d,_0x18facd:0xbc}
    ;
    super(_0x3eebae);
    this._end=0x0;
    this._start=0x0,this._total=--0x34e2,this._rooms=[],this._roomMap=new Map();
  }
._isTracking(_0x22b481,_0xe43db3){
  _0x394de3={
    _0x3401c0:0x1e,_0x24fec2:0x124,_0x27f64d:0x3a5},_0x369a3b={
    _0x47d509:0x108,_0x44499d:0x83,_0x31b08a:0x6f}
  ;
  switch(_0x22b481){
    case WantEvents.Lobby:return!![];
    case ChangeEvents.RoomChanged:return this.active&&!_0xe43db3.roomInfo.status.isPrivateProfile;
    case ChangeEvents.RoomDigestChanged:case ChangeEvents.RoomConfigChanged:case ChangeEvents.RoomChatChanged:return this.active&&this._roomMap.has(b4a.toString(_0xe43db3.roomKey,"hex"));
    default:return![];
  }
}
._process(_0x2a595e,_0x371604){
  _0x161c8c={
    _0x3941f1:0x178,_0x455dd0:0x61,_0x5b60bf:0x4d6},_0x1cbac0={
    _0x34111a:0x190,_0x37c159:0x58,_0x50ea5a:0x4db}
  ;
  switch(_0x2a595e){
    case WantEvents.Lobby:this.active=!![];
    return this._onReset(_0x371604);
    case UnwantEvents.Lobby:this.active=![];
    return null;
    case ChangeEvents.RoomChanged:return this._onRoomActivity(_0x371604);
    case ChangeEvents.RoomDigestChanged:return this._onRoomDigestChanged(_0x371604);
    case ChangeEvents.RoomConfigChanged:return this._onRoomConfigChanged(_0x371604);
    case ChangeEvents.RoomChatChanged:return this._onRoomLastMessageChanged(_0x371604);
    default:return null;
  }
}
._addRoom(_0x2f0485,_0x50748b){
  pushRoomInfo(this.view,_0x2f0485,_0x50748b);
}
._mapInfo(_0x57f920,_0x2df0a3){
  _0x143df6={
    _0x2e8bcc:0xbf,_0x451ca4:0x192},_0x4b3f6c={
    _0x2018bc:0x192,_0xb128ca:0x40,_0x3feff2:0x65f}
  ;
  const _0x56eed1=_0x2df0a3?..status?..isActive!==![]&&!_0x57f920.status.isRemoved&&!_0x57f920.identity&&!(_0x57f920.dm&&!_0x57f920.config.title);
  return{
    'visible':_0x56eed1,'timestamp':_0x57f920.timestamps.latestChatMessage||_0x57f920.timestamps.latestSync}
  ;
}
async._resize(_0xebb7d9){
  _0x334bdb={
    _0x261e3c:0x29,_0x5a103d:0xb2},_0x160c3b={
    _0x228676:0xc2,_0x1697d8:0x151}
  ;
  if(this._rooms.length>=_0xebb7d9)return;
  let _0x41c1e2=this._rooms.length||0x1;
  while(_0x41c1e2<_0xebb7d9){
    _0x41c1e2*=-0x304e;
  }
const _0x1ada9d=this.keet.local.snapshot(),[_0x81817a,_0x1d1a5c]=await Promise.all([_0x1ada9d.find("@local/rooms-by-timestamp",{'reverse':!![],'limit':_0x41c1e2}).toArray(),_0x1ada9d.get("@local/stats")]);
await _0x1ada9d.close(),this._total=_0x1d1a5c.activeRooms,this._rooms=[];
this._roomMap.clear();
for(let _0x3de02e=-0x1c4;_0x3de02e<_0x81817a.length;_0x3de02e++){
  const _0x30a70d=_0x81817a[_0x3de02e],_0x1226cb=b4a.toString(_0x30a70d.roomKey,"hex"),{
    timestamp:_0x4811a8}
  =this._mapInfo(_0x30a70d),_0x446784={
    'id':_0x1226cb,'record':_0x30a70d,'position':_0x3de02e,'timestamp':_0x4811a8}
  ;
  this._rooms.push(_0x446784),this._roomMap.set(_0x1226cb,_0x446784);
}
}
._pushViewport(){
  _0x534d9c={
    _0x20e793:0x123,_0x2527d6:0x6b,_0x11753a:0x3d},_0x30c7e5={
    _0x3cedec:0x1e2,_0x7b50f7:0x1a4,_0x23c9d2:0x114}
  ;
  const _0xd48403=[];
  for(let _0x483c81=this._start;_0x483c81<Math.min(this._end,this._rooms.length);_0x483c81++){
    const {
      id:_0x48fad6,record:_0x232fe8}
    =this._rooms[_0x483c81];
    this._addRoom(_0x48fad6,_0x232fe8),_0xd48403.push(_0x232fe8.roomKey);
  }
this.rpc.coreLobbyReset({'keys':_0xd48403,'start':this._start,'end':this._end,'total':this._total});
}
async._onReset({clock:_0x120635,start:_0x515c93,end:_0x486e4c}){
  _0x59eb7d={
    _0x336069:0xd7,_0x5bf35f:0x14d,_0x215c3d:0x1c4},_0x2a567d={
    _0xc76c31:0x32,_0x21a53a:0x3f6}
  ;
  this._start=_0x515c93,this._end=_0x486e4c;
  await this._resize(_0x486e4c),this._pushViewport();
  if(_0x120635>0x0)this.rpc.coreHaveLobby({'clock':_0x120635});
}
async._onRoomActivity({roomKey:_0x32a245,roomInfo:_0x1677e8}){
  _0x162223={
    _0x368b5d:0x97,_0x341ff9:0x14f,_0x300acf:0x515},_0x313dd4={
    _0x29ec71:0xd,_0x1f4bf8:0xb7,_0x121ac1:0x88},_0x488ea5=b4a.toString(_0x32a245,'hex'),_0x5961df=this.keet.local.snapshot(),[_0x429637,_0x295c50]=await Promise.all([_0x5961df.get("@local/stats"),_0x5961df.get("@local/room-preferences",{'roomKey':_0x32a245})]);
  await _0x5961df.close();
  this._total=_0x429637.activeRooms;
  const {
    visible:_0x20e5bd,timestamp:_0x4df589}
  =this._mapInfo(_0x1677e8,_0x295c50),_0x2f0cd9=_0x1677e8,_0x296df3=this._roomMap.get(_0x488ea5);
  if(!_0x296df3&&!_0x20e5bd)return;
  if(_0x296df3&&_0x20e5bd&&_0x4df589<=_0x296df3.timestamp)return;
  const _0x42944a=_0x296df3?..position??-(--0x3871);
  let _0x4556a6=-(-0x4bff);
  if(_0x20e5bd){
    let _0x738e09=0x0,_0x5a95aa=this._rooms.length;
    while(_0x738e09<_0x5a95aa){
      const _0x3961c1=_0x738e09+_0x5a95aa>>>--0x35fd;
      if(this._rooms[_0x3961c1].timestamp>_0x4df589)_0x738e09=_0x3961c1+(0x1);
      else _0x5a95aa=_0x3961c1;
    }
  _0x4556a6=_0x738e09;
  if(_0x296df3&&_0x4556a6>_0x42944a)_0x4556a6--;
}
if(_0x42944a===_0x4556a6){
  _0x296df3&&(_0x296df3.record=_0x2f0cd9,_0x296df3.timestamp=_0x4df589);
  return;
}
if(_0x4556a6<0x0){
  for(let _0x150bad=_0x42944a,_0x1d8b2c=this._rooms.length-(--0xd71);_0x150bad<_0x1d8b2c;_0x150bad++){
    this._rooms[_0x150bad]=this._rooms[_0x150bad+(-0x1cd9)],this._rooms[_0x150bad].position=_0x150bad;
  }
this._rooms.pop(),this._roomMap.delete(_0x488ea5);
}else{
if(_0x42944a<-0x69a){
  this._rooms.push(null);
  for(let _0x10363a=this._rooms.length-(-0x26a1);_0x10363a>_0x4556a6;_0x10363a--){
    this._rooms[_0x10363a]=this._rooms[_0x10363a-(-0x3f13)],this._rooms[_0x10363a].position=_0x10363a;
  }
const _0x1276c2={
  'id':_0x488ea5,'record':_0x2f0cd9,'position':_0x4556a6,'timestamp':_0x4df589}
;
this._rooms[_0x4556a6]=_0x1276c2,this._roomMap.set(_0x488ea5,_0x1276c2);
}else{
if(_0x42944a>_0x4556a6){
  for(let _0x2a67dd=_0x42944a;_0x2a67dd>_0x4556a6;_0x2a67dd--){
    this._rooms[_0x2a67dd]=this._rooms[_0x2a67dd-(-0x22ad)],this._rooms[_0x2a67dd].position=_0x2a67dd;
  }
this._rooms[_0x4556a6]=_0x296df3,_0x296df3.position=_0x4556a6,_0x296df3.record=_0x2f0cd9,_0x296df3.timestamp=_0x4df589;
}else{
for(let _0x33930c=_0x42944a;_0x33930c<_0x4556a6;_0x33930c++){
  this._rooms[_0x33930c]=this._rooms[_0x33930c+(0x1)],this._rooms[_0x33930c].position=_0x33930c;
}
this._rooms[_0x4556a6]=_0x296df3,_0x296df3.position=_0x4556a6,_0x296df3.record=_0x2f0cd9,_0x296df3.timestamp=_0x4df589;
}
}
}
(_0x42944a>=-0x3356&&_0x42944a<this._end||_0x4556a6>=0x0&&_0x4556a6<this._end)&&this._pushViewport();
}
._onRoomDigestChanged({roomKey:_0x31d20d,value:_0x330b32}){
  _0x1470a9={
    _0xc7de78:0x1e7,_0x3786f3:0xab},_0x5bba22={
    _0xe380df:0x1e6,_0x1e5f77:0x31}
  ;
  const _0x10a975=b4a.toString(_0x31d20d,'hex');
  this.view.roomInfo.onDigestChanged({'id':_0x10a975,'digest':_0x330b32});
}
._onRoomConfigChanged({roomKey:_0x5cb4e6,value:_0x37193a}){
  _0x428727={
    _0x206de0:0xac,_0x28a791:0x4eb},_0x1af320={
    _0x36c922:0x15e,_0x350922:0xc6,_0x293276:0x14c}
  ;
  const _0x2fb26d=b4a.toString(_0x5cb4e6,"hex");
  this.view.roomInfo.onConfigChanged({'id':_0x2fb26d,'config':_0x37193a});
}
._onRoomLastMessageChanged({roomKey:_0x4a4449,roomInfo:_0x27b55f}){
  _0x363956={
    _0xe1f419:0xff,_0x43baf9:0x186,_0x48bd5e:0x5bd},_0x5e499c={
    _0x2031c2:0x180}
  ;
  const _0x153d01=b4a.toString(_0x4a4449,"hex");
  pushRoomLastMessage(this.view,_0x153d01,_0x27b55f);
}
}
class ChatTracker extends Tracker{
  constructor(_0x308a4d){
    _0x54e339={
      _0x20c303:0x63,_0x14e133:0xde,_0x18ee19:0x12f},_0x23cfec={
      _0x39b3de:0xa9,_0x2ee8d3:0x62}
    ;
    super(_0x308a4d),this.roomKey=null,this._roomId=null;
    this.start=0x0;
    this.size=-0x3e74,this.isBottom=![],this._chatLength=-(0x1),this._viewportIds=[],this._memberMessages=new Map();
  }
._isTracking(_0x10d494,_0x3c607f){
  _0x336320={
    _0x4a771e:0x18a,_0x38c294:0x11f,_0x444ea4:0x6},_0x1405df={
    _0x5b5d5f:0x23}
  ;
  let _0x1496b4=![];
  switch(_0x10d494){
    case WantEvents.Chat:_0x1496b4=!![];
    break;
    case UnwantEvents.Chat:_0x1496b4=!![];
    break;
    case ChangeEvents.RoomDigestChanged:case ChangeEvents.RoomConfigChanged:_0x1496b4=this.active&&this.roomKey&&b4a.equals(_0x3c607f.roomKey,this.roomKey);
    break;
    case ChangeEvents.RoomChatChanged:case ChangeEvents.RoomReactionsChanged:case ChangeEvents.RoomMemberChanged:_0x1496b4=this.roomKey&&b4a.equals(_0x3c607f.roomKey,this.roomKey);
    break;
    default:_0x1496b4=![];
  }
return _0x1496b4;
}
._process(_0x5458a6,_0x27efe9){
  _0x11cb08={
    _0x2b6d5a:0x47,_0x23b14b:0xf2},_0x1b9b3b={
    _0x104e4f:0xbd,_0x2f81bf:0x4c,_0x54ad00:0x4b2}
  ;
  switch(_0x5458a6){
    case WantEvents.Chat:this._chatLength=-(-0x49d7);
    return this._onActivate(_0x27efe9);
    case UnwantEvents.Chat:return this._onDeactivate(_0x27efe9);
    case ChangeEvents.RoomDigestChanged:return this._onRoomDigestChanged(_0x27efe9);
    case ChangeEvents.RoomConfigChanged:return this._onRoomConfigChanged(_0x27efe9);
    case ChangeEvents.RoomChatChanged:return this._onRoomChatChanged(_0x27efe9);
    case ChangeEvents.RoomReactionsChanged:return this._onRoomReactionsChanged(_0x27efe9);
    case ChangeEvents.RoomMemberChanged:return this._onRoomMemberChanged(_0x27efe9);
    default:return null;
  }
}
async._pushMessage(_0x2fb9ec,_0x3ba6b1){
  _0x54b9f3={
    _0x21b334:0x154,_0x29a7b8:0x11a},_0x33dd41={
    _0xfe990a:0x195,_0x572e67:0x7d},[_0x323c8b,_0x10bfc0]=await Promise.all([_0x2fb9ec.get("@keet/reaction-digests",{'id':_0x3ba6b1.id}),_0x2fb9ec.get("@keet/devices",{'key':_0x3ba6b1.oplog.key})]);
  const _0x32a83e=await _0x2fb9ec.get("@keet/members",{'key':_0x10bfc0.memberKey});
  return this._pushMessageDirect(_0x3ba6b1,_0x323c8b,_0x10bfc0,_0x32a83e);
}
._pushMessageDirect(_0x31bb8d,_0x4d9bbd,_0x367ffc,_0x182d24){
  _0x5813fd={
    _0x5184ba:0x1d8,_0x257fd8:0x58b},_0x34c059={
    _0x51ff42:0xc5,_0xadc681:0x1a9,_0x172691:0x561},_0x4794ab=b4a.toString(_0x182d24.key,'hex'),_0x42c8cf=b4a.toString(_0x31bb8d.oplog.key,'hex')+'-'+_0x31bb8d.oplog.seq;
  !this._memberMessages.has(_0x4794ab)&&this._memberMessages.set(_0x4794ab,[]);
  this._memberMessages.get(_0x4794ab).push(_0x31bb8d.oplog);
  if(_0x4d9bbd)this.view.reactions.add(_0x4d9bbd,{'cacheId':_0x42c8cf});
  this.view.members.add(_0x182d24);
  const _0x1c722c={
    'chat':formatMessage(_0x31bb8d),'memberKey':_0x182d24.key,'role':_0x182d24.status}
  ;
  return this.view.messageInfo.onAdd(_0x1c722c,{'cacheId':_0x42c8cf}),_0x31bb8d.oplog;
}
async._pushMessages(_0x59c8ec,_0x26a678,_0x4ec610){
  _0x3b3fcf={
    _0x5832eb:0x95,_0x4718ab:0x609},_0x1e2368={
    _0x1bc313:0x1a2,_0x477729:0x11f}
  ;
  this._memberMessages.clear();
  const _0xa29c45=[];
  for await(const _0x4e7dde of _0x59c8ec.find("@keet/chat",_0x26a678)){
    _0xa29c45.push(this._pushMessage(_0x59c8ec,_0x4e7dde));
  }
const _0x32f627=await Promise.all(_0xa29c45);
this._viewportIds=_0x32f627;
this._emitReset(_0x4ec610);
}
._emitReset(_0x26d874){
  _0x469323={
    _0x50c031:0x35,_0x25f1f6:0x0,_0x60eb38:0x5c},_0x2de718={
    _0x13a572:0x17f,_0x46bde3:0x82,_0x275933:0x4a5}
  ;
  this.view.chat.onReset({'ids':this._viewportIds,'roomKey':this.roomKey,'start':this.start,'size':this.size,'total':_0x26d874,'isBottom':this.isBottom});
}
async._pushViewport(){
  _0x3be34c={
    _0x46e951:0x12c,_0x951652:0xcb,_0x25e82a:0x4d2},_0x310df2={
    _0x2a2bd0:0x162,_0x17ec4a:0x1b3,_0x2e8b39:0x98}
  ;
  const _0x4e64f7=this.keet.internalOpenExistingRoom(this.roomKey),_0x1724b5=_0x4e64f7.db.snapshot();
  try{
    const _0x1f025f=await _0x1724b5.get("@keet/threads",{'id':0x0});
    this._chatLength=_0x1f025f.count;
    const _0x4700e8=Math.max(this.isBottom?this._chatLength-this.size:this.start,0x0),_0x3983fe=Math.min(this.isBottom?this._chatLength:this.start+this.size,this._chatLength);
    await this._pushMessages(_0x1724b5,{'gte':{'id':{'thread':0x0,'index':_0x4700e8}},'lt':{'id':{'thread':0x0,'index':_0x3983fe}}},this._chatLength);
  }finally{
  if(_0x1724b5)await _0x1724b5.close();
  this.keet.internalReleaseRoom(_0x4e64f7);
}
}
async._onActivate({clock:_0x1f2dd0,roomKey:_0x92f644,start:_0x4cc972,size:_0x1939ba,isBottom:_0x1478cd}){
  _0x3b2df3={
    _0x278b84:0x1d5,_0x532559:0xe6},_0xb37ee7={
    _0x198321:0x16f,_0x1ecd2e:0x3bb}
  ;
  this.roomKey&&!b4a.equals(this.roomKey,_0x92f644)&&(await this.keet.deactivateRoom(this.roomKey),this.view.rooms.unref(this._roomId));
  this.roomKey=_0x92f644,this._roomId=b4a.toString(_0x92f644,"hex"),this.start=_0x4cc972,this.size=_0x1939ba,this.isBottom=_0x1478cd,this.view.rooms.ref(this._roomId),await this.keet.activateRoom(_0x92f644),this.active=!![];
  const _0x1c96ca=await this.keet.local.get("@local/rooms",{'roomKey':_0x92f644});
  pushRoomInfo(this.view,this._roomId,_0x1c96ca),await this._pushViewport();
  _0x1f2dd0>-0x370a&&this.rpc.coreHaveChat({'clock':_0x1f2dd0});
}
async._onDeactivate(){
  _0x551264={
    _0x2b8808:0x18c,_0x1221a0:0xd1,_0x22d463:0x172},_0x16d350={
    _0x5c5199:0xd1,_0x1ca4b2:0x150,_0x266154:0x3a1}
  ;
  this.roomKey&&(await this.keet.deactivateRoom(this.roomKey),this.view.rooms.unref(this._roomId));
  this.roomKey=null,this._roomId=null,this.active=![];
}
._onRoomDigestChanged({value:_0x51c7e0}){
  _0xc4ec79={
    _0x5879cb:0x86,_0x199cb3:0xf8,_0x3dd8e1:0x14e},_0x59a4cb={
    _0x37b82c:0xde,_0x132961:0x118,_0x2734fb:0x40}
  ;
  this.view.roomInfo.onDigestChanged({'id':this._roomId,'digest':_0x51c7e0});
}
._onRoomConfigChanged({value:_0x2cd7ec}){
  _0x4842af={
    _0x1840dc:0x15e,_0xdea33d:0x1a1,_0x2e3de3:0x289},_0x4fde90={
    _0x175acd:0x7c,_0x3e5273:0xe1,_0x31957d:0x5e9}
  ;
  this.view.roomInfo.onConfigChanged({'id':this._roomId,'config':_0x2cd7ec});
}
._isInViewport(_0x38a08d){
  _0x57a26f={
    _0x520d2b:0x165,_0x270553:0x13a},_0x49bb38={
    _0x6720d2:0x19d,_0x1b455a:0x109},_0x36b373=this.isBottom?this._chatLength-this.size:this.start;
  const _0x363971=this.isBottom?this._chatLength:this.start+this.size;
  return _0x38a08d>=_0x36b373&&_0x38a08d<_0x363971;
}
._onRoomChatChanged(_0x31aa42){
  _0x17b5aa={
    _0xc52e51:0x1b3,_0x5bd0c9:0x14d},_0x1ef618={
    _0x4db8a6:0x1dc,_0x512148:0x94,_0x819a17:0x36e},{
    message:_0x9d6fd2,reactions:_0x2027e1,device:_0x3ac7b6,member:_0x4a5f6d}
  =_0x31aa42.value,_0x2e42dc=_0x9d6fd2.id.index;
  if(_0x2e42dc>=this._chatLength){
    if(this.isBottom){
      const _0x2a70b7=this._pushMessageDirect(_0x9d6fd2,_0x2027e1,_0x3ac7b6,_0x4a5f6d);
      this._viewportIds.push(_0x2a70b7),this._chatLength=_0x2e42dc+(-0x3291);
      while(this._viewportIds.length>this.size){
        this._viewportIds.shift();
      }
    this._emitReset(this._chatLength);
  }
return;
}
this._isInViewport(_0x2e42dc)&&this.view.messageInfo.onChatChanged({'chat':formatMessage(_0x9d6fd2)});
}
._onRoomReactionsChanged({value:{id:_0x507708,reactions:_0x5931bd}}){
  _0x2c95ce={
    _0x1423ff:0x324},_0x47466b={
    _0x1c56eb:0x1eb,_0x4a4583:0x2b4}
  ;
  if(!this._isInViewport(_0x5931bd.id.index))return;
  this.view.messageInfo.onReactionsChanged({'id':_0x507708,'reactions':_0x5931bd});
}
._onRoomMemberChanged({value:_0x51dd06}){
  _0x3bc28a={
    _0xe6ca2d:0x81,_0x51fb43:0x406},_0x8301fa={
    _0x222d8b:0x1bd,_0x219dc0:0x81}
  ;
  const _0x11cf72=b4a.toString(_0x51dd06.key,"hex"),_0x35a540=this._memberMessages.get(_0x11cf72);
  if(!_0x35a540||_0x35a540.length===--0x3d1c)return;
  this.view.members.add(_0x51dd06),this.view.messageInfo.onRoleChanged({'ids':_0x35a540,'role':_0x51dd06.status}),this.view.messageInfo.onMemberChanged({'ids':_0x35a540,'memberKey':_0x51dd06.key});
}
}
class MemberTracker extends Tracker{
}
class CreateRoomMethod extends KeetMethod{
  async._run(){
    _0x3225a5={
      _0x4e71d6:0xd7,_0x4ebde2:0x97},_0x5914f1={
      _0x2d3416:0x126,_0x2f0977:0xfe,_0xe2229:0x1e7},_0x1874b9=await this.keet.createRoom(this.req);
    return{
      'roomKey':_0x1874b9}
    ;
  }
}
class LeaveRoomMethod extends KeetMethod{
  ._run(){
    _0x27fa31={
      _0x20a69c:0x1af,_0x63c03b:0x1cb,_0x4180b9:0x13},_0x196e1e={
      _0x38059f:0x36}
    ;
    return this.keet.leaveRoom(this.req.roomKey);
  }
}
class ActivateRoomMethod extends KeetMethod{
  ._run(){
    _0xa0ae06={
      _0x7e70ca:0xc6,_0x311a33:0x400}
    ;
    return this.keet.activateRoom(this.req.roomKey);
  }
}
class DeactivateRoomMethod extends KeetMethod{
  ._run(){
    _0x2b07bd={
      _0x286947:0x4d,_0x1715a8:0x18d},_0x24d854={
      _0x4cc024:0x67,_0x3457ec:0x2e,_0x17fe63:0x22f}
    ;
    return this.keet.deactivateRoom(this.req.roomKey);
  }
}
class CreateRoomInvitationMethod extends KeetMethod{
  async._run(){
    _0x5cb789={
      _0x81e832:0x1eb,_0x4fe2bc:0x14d},_0x6f405f={
      _0x4bafcf:0x3d,_0x2a2799:0x15f},_0x5c331e=this.req.permissions;
    const _0x3789d0=await this.keet.createRoomInvitation(this.req.roomKey,{'requiresConfirmation':!!_0x5c331e?..requiresConfirmation,'canModerate':!!_0x5c331e?..canModerate,'canAdmin':!!_0x5c331e?..canAdmin,'readOnly':!!_0x5c331e?..isReadOnly,'expiration':this.req.expiration});
    return{
      'invitation':_0x3789d0}
    ;
  }
}
class CreateIdentityInvitationMethod extends KeetMethod{
  async._run(){
    _0x32601d={
      _0x17c53a:0x12b,_0xbfd9d3:0x19d},_0x2faa66={
      _0x30b563:0x5a},_0x4192c7=await this.keet.createIdentityInvitation();
    return{
      'invitation':_0x4192c7}
    ;
  }
}
class UpdateProfileMethod extends KeetMethod{
  ._run(){
    _0x369911={
      _0x404498:0x118,_0x15c987:0x19d,_0xcccf10:0x1e},_0x169f56={
      _0x30568b:0x1da,_0x24cd07:0x143,_0x5e0aeb:0x6b}
    ;
    return this.keet.updateProfile(this.req);
  }
}
class StartPairingMethod extends KeetMethod{
  ._run(){
    _0x5332be={
      _0x34e589:0x1d9,_0x517781:0xff,_0x227d64:0x322}
    ;
    if(this.req.isIdentity)return this.keet.startPairingIdentity(this.req.invitation);
    return this.keet.startPairingRoom(this.req.invitation);
  }
}
class AcceptJoinRequestMethod extends KeetMethod{
  ._run(){
    _0x2cf2eb={
      _0x21ebf6:0x8f,_0x46c072:0xf8},_0x2a700e={
      _0x539af0:0x53e}
    ;
    return this.keet.acceptJoinRequest(this.req.roomKey,this.req.request.deviceKey);
  }
}
class RejectJoinRequestMethod extends KeetMethod{
  ._run(){
    _0x14573a={
      _0x13aadf:0xb3,_0x2d8e70:0x68},_0x237ae9={
      _0x274672:0x1a7,_0x289f6b:0x42}
    ;
    return this.keet.rejectJoinRequest(this.req.roomKey,this.req.request.deviceKey);
  }
}
class StopPairingMethod extends KeetMethod{
  ._run(){
    _0x320255={
      _0x7fbca9:0xad,_0x49255d:0x28,_0x155f7a:0xa0},_0x34604a={
      _0xce55a9:0xfd}
    ;
    return this.keet.stopPairing(this.req.id);
  }
}
class UpdateRoomConfigMethod extends KeetMethod{
  ._run(){
    _0x35fbbd={
      _0x2a345c:0xac,_0x321b15:0x1d,_0x45b92f:0x41f},_0x1441b8={
      _0x37c694:0x1bd,_0x5cdb6b:0x1ae}
    ;
    return this.keet.dispatch(this.req.roomKey,"@keet/update-room-config",this.req);
  }
}
class UpdateRoomSettingsMethod extends KeetMethod{
  ._run(){
  }
}
class UpdateRoomStatusMethod extends KeetMethod{
  ._run(){
  }
}
class AddChatMessageMethod extends KeetMethod{
  async._run(){
    _0x49464c={
      _0x5464ec:0x16d,_0x164218:0x53},_0x2e4adf={
      _0x15d35b:0x106,_0x4942ea:0x12,_0x1d1ec9:0x1c4}
    ;
    await this.keet.dispatch(this.req.roomKey,"@keet/add-chat-message",{'message':this.req.message});
  }
}
class EditChatMessageMethod extends KeetMethod{
  ._run(){
    _0x1240ca={
      _0x3fb4b9:0xcc},_0x3fc2bb={
      _0x5e49b6:0xc1,_0x72470d:0x19c,_0x5d21c6:0x374}
    ;
    return this.keet.dispatch(this.req.roomKey,"@keet/update-chat-message",{'oplog':this.req.id,'message':this.req.message});
  }
}
class RemoveChatMessageMethod extends KeetMethod{
  ._run(){
    _0x797075={
      _0x29fbd2:0x52,_0x2758cf:0x18f},_0xafb6ed={
      _0xfcb49e:0x1a8}
    ;
    return this.keet.dispatch(this.req.roomKey,"@keet/remove-chat-message",{'oplog':this.req.id});
  }
}
class AddChatReactionMethod extends KeetMethod{
  ._run(){
    _0x4f9f9c={
      _0x12f68d:0x12d,_0x19335d:0x110,_0xfb98f3:0x325},_0x225aca={
      _0x22c1a5:0x10f,_0x419d7c:0x49}
    ;
    return this.keet.dispatch(this.req.roomKey,"@keet/add-reaction",{'oplog':this.req.id,'reaction':this.req.reaction});
  }
}
class RemoveChatReactionMethod extends KeetMethod{
  ._run(){
    _0x24d42b={
      _0x3cc0ac:0x27,_0x4a999b:0x4f},_0x125b1d={
      _0x5b3199:0x171,_0xc2ebac:0x519}
    ;
    return this.keet.dispatch(this.req.roomKey,"@keet/remove-reaction",{'oplog':this.req.id,'reaction':this.req.reaction});
  }
}
module.exports=class V2KeetCoreAPI extends ReadyResource{
  constructor(_0x5919d7){
    _0x50d5e3={
      _0x429b2c:0x15f,_0x4682bf:0x37f},_0x49b3a8={
      _0x27538a:0x165,_0x2d59b2:0x13c}
    ;
    super(),this.backend=_0x5919d7,this.keet=this.backend.keet,this.rpc=this.backend.rpc,this.view=this.backend.view,this.identityTracker=new IdentityTracker(this),this.pairingTracker=new PairingTracker(this),this.lobbyTracker=new LobbyTracker(this),this.chatTracker=new ChatTracker(this),this.memberTracker=new MemberTracker(this),this.trackers=[this.identityTracker,this.pairingTracker,this.lobbyTracker,this.chatTracker,this.memberTracker],this.rpc.onCoreCreateRoom(this.onCreateRoom.bind(this)),this.rpc.onCoreActivateRoom(this.onActivateRoom.bind(this)),this.rpc.onCoreDeactivateRoom(this.onDeactivateRoom.bind(this)),this.rpc.onCoreLeaveRoom(this.onLeaveRoom.bind(this)),this.rpc.onCoreUpdateRoomConfig(this.onUpdateRoomConfig.bind(this)),this.rpc.onCoreUpdateRoomSettings(this.onUpdateRoomSettings.bind(this)),this.rpc.onCoreUpdateRoomStatus(this.onUpdateRoomStatus.bind(this));
    this.rpc.onCoreUpdateProfile(this.onUpdateProfile.bind(this)),this.rpc.onCoreStartPairing(this.onStartPairing.bind(this)),this.rpc.onCoreCreateRoomInvitation(this.onCreateRoomInvitation.bind(this)),this.rpc.onCoreCreateIdentityInvitation(this.onCreateIdentityInvitation.bind(this)),this.rpc.onCoreAcceptJoinRequest(this.onAcceptJoinRequest.bind(this)),this.rpc.onCoreRejectJoinRequest(this.onRejectJoinRequest.bind(this)),this.rpc.onCoreStopPairing(this.onStopPairing.bind(this)),this.rpc.onCoreAddChatMessage(this.onAddChatMessage.bind(this)),this.rpc.onCoreEditChatMessage(this.onEditChatMessage.bind(this)),this.rpc.onCoreRemoveChatMessage(this.onRemoveChatMessage.bind(this)),this.rpc.onCoreAddChatReaction(this.onAddChatReaction.bind(this)),this.rpc.onCoreRemoveChatReaction(this.onRemoveChatReaction.bind(this)),this.rpc.onCoreWantLobby(this.onWantLobby.bind(this)),this.rpc.onCoreUnwantLobby(this.onUnwantLobby.bind(this));
    this.rpc.onCoreWantIdentity(this.onWantIdentity.bind(this)),this.rpc.onCoreUnwantIdentity(this.onUnwantIdentity.bind(this)),this.rpc.onCoreWantPairing(this.onWantPairing.bind(this)),this.rpc.onCoreUnwantPairing(this.onUnwantPairing.bind(this)),this.rpc.onCoreWantChat(this.onWantChat.bind(this)),this.rpc.onCoreUnwantChat(this.onUnwantChat.bind(this)),this.rpc.onCoreWantMembers(this.onWantMembers.bind(this)),this.rpc.onCoreUnwantMembers(this.onUnwantMembers.bind(this));
  }
async.boot(){
  return{
  }
;
}
.onPairingChanged(){
  _0x4eb844={
    _0x41a6a4:0xd1,_0x5241dc:0x18c,_0x5b7152:0x62},_0x33a77e={
    _0x26f597:0x8b,_0x283d2d:0x65}
  ;
  this._dispatch(ChangeEvents.PairingChanged,null);
}
.onRoomChanged(_0x45bb13){
  _0x53660b={
    _0x298001:0xd},_0x4a6661={
    _0x31f6c8:0x109,_0x57a9b9:0x14}
  ;
  this.identityTracker.dispatch(ChangeEvents.RoomChanged,_0x45bb13),this.pairingTracker.dispatch(ChangeEvents.RoomChanged,_0x45bb13);
  this.lobbyTracker.dispatch(ChangeEvents.RoomChanged,_0x45bb13);
  this.chatTracker.dispatch(ChangeEvents.RoomChanged,_0x45bb13);
}
.onRoomChatChanged(_0x534cd5){
  _0x4f585b={
    _0x418e57:0x157,_0x50e969:0x199},_0x38ce63={
    _0xb8c811:0x1bf}
  ;
  this.chatTracker.dispatch(ChangeEvents.RoomChatChanged,_0x534cd5);
  this.lobbyTracker.dispatch(ChangeEvents.RoomChatChanged,_0x534cd5);
}
.onRoomDigestChanged(_0xd0a701){
  _0x563d70={
    _0xe4183f:0xba,_0x47dff7:0x4b6},_0x5ee59b={
    _0x47c66:0xe8}
  ;
  this.lobbyTracker.dispatch(ChangeEvents.RoomDigestChanged,_0xd0a701);
  this.chatTracker.dispatch(ChangeEvents.RoomDigestChanged,_0xd0a701);
}
.onRoomMemberChanged(_0x4dc99d){
  _0x41ec3a={
    _0x1e23e9:0x1ee,_0x4e3fc6:0x1cd,_0x4eb492:0x11c},_0x202506={
    _0x51f0da:0xa8,_0x3d90e3:0x119}
  ;
  this.identityTracker.dispatch(ChangeEvents.RoomMemberChanged,_0x4dc99d);
  this.chatTracker.dispatch(ChangeEvents.RoomMemberChanged,_0x4dc99d);
}
.onRoomDeviceChanged(_0x4ad1ba){
  _0x1b73fb={
    _0xf31868:0x107,_0x52689a:0x247},_0x658454={
    _0x30a92f:0x4,_0x3834c9:0xc7}
  ;
  this.identityTracker.dispatch(ChangeEvents.RoomDeviceChanged,_0x4ad1ba);
}
.onRoomConfigChanged(_0x59c80c){
  _0x51e0f7={
    _0x4b2f5f:0x157,_0x3cd5d4:0x1ce,_0x550f4a:0x130},_0x1483dc={
    _0x27fec0:0x141,_0x14c955:0x165}
  ;
  this.lobbyTracker.dispatch(ChangeEvents.RoomConfigChanged,_0x59c80c);
  this.chatTracker.dispatch(ChangeEvents.RoomConfigChanged,_0x59c80c);
}
.onRoomReactionsChanged(_0x5ca090){
  _0x55447b={
    _0x2cf4e7:0xe1,_0x3e7966:0x155,_0x12a2c9:0x61e},_0x37f469={
    _0x2241c2:0x115,_0x97a6f3:0x178}
  ;
  this.chatTracker.dispatch(ChangeEvents.RoomReactionsChanged,_0x5ca090);
}
.onRoomStatsChanged(_0x4e317f){
  _0x3e7c78={
    _0x24fca8:0x1a8,_0x33d3f2:0xc0,_0xcf132c:0x162},_0x319508={
    _0x2260af:0x17d}
  ;
  this.chatTracker.dispatch(ChangeEvents.RoomStatsChanged,_0x4e317f);
}
.onRoomJoinRequestsChanged(_0x109ade){
  _0x18a61d={
    _0x4c5b28:0x188,_0x4e1502:0x90},_0x414a19={
    _0x5e0529:0x18e,_0x359da9:0x103,_0x580540:0x1ec}
  ;
  this.pairingTracker.dispatch(ChangeEvents.RoomJoinRequestsChanged,_0x109ade);
}
.onWantIdentity(_0x449c12){
  _0x4b547b={
    _0x591dd9:0x5a,_0x5e4be6:0x147},_0x514cca={
    _0x31349e:0x128,_0xd5fe95:0x188,_0x2ee1e3:0x4ee}
  ;
  this.identityTracker.dispatch(WantEvents.Identity,_0x449c12);
}
.onUnwantIdentity(_0xd72218){
  _0x35a896={
    _0x527730:0xd6,_0x1838e5:0x492},_0x3d48fd={
    _0x2c50cd:0x98}
  ;
  this.identityTracker.dispatch(UnwantEvents.Identity,_0xd72218);
}
.onWantPairing(_0x1b1e65){
  _0x855923={
    _0x2eda48:0x1c9,_0x655192:0x170,_0x6f922d:0x4f6},_0x55a4ed={
    _0x4cfb38:0x1cb,_0x4938cb:0xe7}
  ;
  this.pairingTracker.dispatch(WantEvents.Pairing,_0x1b1e65);
}
.onUnwantPairing(_0x14a72a){
  _0x2cc7a8={
    _0xdcde5d:0x12e,_0x34711a:0x61,_0x55343d:0xd},_0x33f3d1={
    _0x28935d:0x155,_0x5e0f3b:0x1a1,_0xf34866:0x29c}
  ;
  this.pairingTracker.dispatch(UnwantEvents.Pairing,_0x14a72a);
}
.onWantLobby(_0x55c860){
  _0x14ea80={
    _0x43c938:0xe3,_0x3f9169:0xa1}
  ;
  this.lobbyTracker.dispatch(WantEvents.Lobby,_0x55c860);
}
.onUnwantLobby(_0x491291){
  _0x3d861b={
    _0x14f6f2:0x3b,_0x41147d:0x164,_0x5dc032:0x473},_0x1b30b2={
    _0x1f4fa9:0x186,_0x500145:0x31f}
  ;
  this.lobbyTracker.dispatch(UnwantEvents.Lobby,_0x491291);
}
.onWantChat(_0x4627cc){
  _0x2d994e={
    _0x5659f2:0x1a3,_0x3c38ed:0x314},_0x531bc7={
    _0xf2759a:0x13b,_0xc72c1f:0x13d,_0x31bdbe:0xe9}
  ;
  this.chatTracker.dispatch(WantEvents.Chat,_0x4627cc);
}
.onUnwantChat(_0x254725){
  _0x4176ad={
    _0x163354:0xf6},_0x492ba5={
    _0x1ba13a:0xc7,_0x460c40:0x450}
  ;
  this.chatTracker.dispatch(UnwantEvents.Chat,_0x254725);
}
.onWantReactions(_0x39403c){
  _0x1ede43={
    _0x1e7237:0x1ea,_0xf9680d:0x3c},_0x38caf3={
    _0x5b9f8a:0x1b9,_0x509ed5:0x145,_0xcf4d25:0x619}
  ;
  this.reactionTracker.dispatch(WantEvents.Reactions,_0x39403c);
}
.onUnwantReactions(_0x213246){
  _0x193a28={
    _0x293e50:0x4f,_0x1fd0ab:0x1d8,_0x124c8c:0x35f},_0x1d8a7a={
    _0x3f613d:0x190,_0x31b3c2:0x53}
  ;
  this.reactionTracker.dispatch(UnwantEvents.Reactions,_0x213246);
}
.onWantMembers(_0x2c837c){
  _0x2b8822={
    _0x4973eb:0x60,_0x2c5065:0xa3},_0x1118bb={
    _0x546bae:0xa,_0x3df4cc:0x13d,_0x1044a3:0x10a}
  ;
  this.memberTracker.dispatch(WantEvents.Members,_0x2c837c);
}
.onUnwantMembers(_0x4aceb2){
  _0xc0cc52={
    _0x489ee2:0x4d,_0x4a439d:0x152,_0x5424ba:0x114},_0x22cad6={
    _0x2f385c:0x2c,_0x185921:0x3fb}
  ;
  this.memberTracker.dispatch(UnwantEvents.Members,_0x4aceb2);
}
.onCreateRoom(_0x1e0c99){
  _0x595c1a={
    _0x1ef14a:0x5a,_0x3d1568:0x253}
  ;
  return CreateRoomMethod.run(this.backend,_0x1e0c99);
}
.onLeaveRoom(_0x3bd3ab){
  _0x3301f0={
    _0x258540:0x149,_0x47b1c1:0xcd}
  ;
  return LeaveRoomMethod.run(this.backend,_0x3bd3ab);
}
.onActivateRoom(_0x10d322){
  _0x3c2aed={
    _0x208e1e:0x118,_0x3b9f01:0x485}
  ;
  return ActivateRoomMethod.run(this.backend,_0x10d322);
}
.onDeactivateRoom(_0x5179c4){
  _0x1f56f4={
    _0x26d79b:0xae,_0x534029:0x25,_0x57f83b:0x1a},_0x1fb4a0={
    _0x469310:0x62,_0x53f54f:0x1db}
  ;
  return DeactivateRoomMethod.run(this.backend,_0x5179c4);
}
.onUpdateRoomConfig(_0x2e29c0){
  _0x1104a3={
    _0x49de52:0xc8,_0x3ebc50:0x1c0},_0x460d80={
    _0x3adfe3:0x15}
  ;
  return UpdateRoomConfigMethod.run(this.backend,_0x2e29c0);
}
.onUpdateRoomSettings(_0x4c78d5){
  _0x17afee={
    _0x1f3dcf:0x9d,_0xef2829:0x558}
  ;
  return UpdateRoomSettingsMethod.run(this.backend,_0x4c78d5);
}
.onUpdateRoomStatus(_0x2e54f5){
  _0x41823b={
    _0x318278:0xca,_0x516314:0x10,_0xc6564b:0x355}
  ;
  return UpdateRoomStatusMethod.run(this.backend,_0x2e54f5);
}
.onUpdateProfile(_0x19253e){
  _0xa4b0f2={
    _0x51a008:0x16f,_0x2809ac:0x2e},_0x2fd8f8={
    _0x368838:0x127,_0x46ab91:0x188,_0x564803:0x14b}
  ;
  return UpdateProfileMethod.run(this.backend,_0x19253e);
}
.onStartPairing(_0x1ca0fc){
  _0x563f38={
    _0x83311b:0x11c,_0x4aacc8:0x130},_0x55185b={
    _0x5037f1:0x84}
  ;
  return StartPairingMethod.run(this.backend,_0x1ca0fc);
}
.onCreateRoomInvitation(_0x16a7d3){
  _0x428449={
    _0x3e1662:0xb7,_0x3bdca8:0xcb,_0x50ab2a:0x2cf},_0x742f01={
    _0xd7d6fd:0x81,_0x56800d:0xd3}
  ;
  return CreateRoomInvitationMethod.run(this.backend,_0x16a7d3);
}
.onCreateIdentityInvitation(_0x5f5091){
  return CreateIdentityInvitationMethod.run(this.backend,_0x5f5091);
}
.onAcceptJoinRequest(_0x29f35a){
  _0x4eb56e={
    _0xda2c8f:0xbb,_0x27ece5:0x7e,_0x4d515a:0x5d5},_0x47da29={
    _0x4258da:0xb3,_0x2e925b:0xa4,_0xc57d6d:0x54}
  ;
  return AcceptJoinRequestMethod.run(this.backend,_0x29f35a);
}
.onRejectJoinRequest(_0x32305f){
  _0x403aa3={
    _0x4927df:0xb0,_0x528637:0xa9,_0x1818bb:0x1fe},_0x567512={
    _0x36a35c:0x1d8,_0x29f8b8:0x1d3}
  ;
  return RejectJoinRequestMethod.run(this.backend,_0x32305f);
}
.onStopPairing(_0x2feaa5){
  _0xc4c554={
    _0x4003f1:0x1b0,_0x2e4072:0x1ee,_0x4fd313:0x115}
  ;
  return StopPairingMethod.run(this.backend,_0x2feaa5);
}
.onAddChatMessage(_0x7c0cf5){
  _0x12c5ea={
    _0x1c7a82:0xa8},_0xb2b912={
    _0x154196:0x133,_0x1b2f99:0x13b}
  ;
  return AddChatMessageMethod.run(this.backend,_0x7c0cf5);
}
.onEditChatMessage(_0x24d3da){
  _0x415d33={
    _0x13116b:0xf1,_0x326de9:0x187,_0xdec197:0x389},_0x3d4ee0={
    _0x5ca00c:0x11e,_0x597bc1:0xbd,_0x19dc63:0x4d0}
  ;
  return EditChatMessageMethod.run(this.backend,_0x24d3da);
}
.onRemoveChatMessage(_0x22ba4c){
  _0x50445b={
    _0x53bdd5:0xd7,_0x96cc3b:0x1d5},_0x57d78b={
    _0x4cec94:0x191,_0x338178:0x167}
  ;
  return RemoveChatMessageMethod.run(this.backend,_0x22ba4c);
}
.onAddChatReaction(_0x402811){
  _0x58c9b4={
    _0x5cc39c:0x56,_0x44c32d:0x16d},_0x500d6d={
    _0x245e7e:0x1b4}
  ;
  return AddChatReactionMethod.run(this.backend,_0x402811);
}
.onRemoveChatReaction(_0xf866ca){
  _0x434777={
    _0x4b227b:0x1b5,_0x53e716:0x41e},_0x1ff465={
    _0x46a695:0x3}
  ;
  return RemoveChatReactionMethod.run(this.backend,_0xf866ca);
}
}
;
function formatMessage(_0x947bae){
  _0x3858ce={
    _0x115b9d:0xe1,_0x4bf8cc:0x178,_0x151aa6:0x46a},_0x532959={
    _0x273134:0x1,_0x1f00d1:0xf}
  ;
  return{
    'id':_0x947bae.oplog,'clock':_0x947bae.clock,'timestamps':{
      'sent':_0x947bae.timestamp,'edited':_0x947bae.editedAt},'status':_0x947bae.status,'message':_0x947bae.message,'event':_0x947bae.event}
  ;
}
function formatRoomRole(_0x5645d0){
  _0x4fa569={
    _0x19cdfc:0x112,_0x3f2ac0:0xa0,_0x114e6a:0x324},_0x301464={
    _0x50925c:0x1b7,_0x29eb54:0x319}
  ;
  return{
    'member':_0x5645d0.selfMember?..status,'device':_0x5645d0.status}
  ;
}
function pushRoomInfo(_0x364d28,_0x20f717,_0x5f01ea){
  _0x2f418c={
    _0x3236a5:0xcd,_0x43c809:0x48,_0x5f3a3a:0xd6},_0x5567a9={
    _0x2c86a1:0x31,_0x391047:0x32,_0x231033:0x90}
  ;
  let _0x2b9342=null;
  _0x5f01ea.lastMessage&&(_0x364d28.members.add(_0x5f01ea.lastMember),_0x2b9342=_0x364d28.messageInfo.onAdd({'chat':formatMessage(_0x5f01ea.lastMessage),'memberKey':_0x5f01ea.lastMember.key,'role':_0x5f01ea.lastMember.status}));
  const _0x37d1eb={
    'id':_0x5f01ea.roomKey,'digest':_0x5f01ea.digest,'config':_0x5f01ea.config,'messageId':_0x2b9342?..id,'role':formatRoomRole(_0x5f01ea)}
  ;
  _0x364d28.roomInfo.onAdd(_0x37d1eb,{'cacheId':_0x20f717});
}
function pushRoomLastMessage(_0x550d8f,_0x179625,_0x5704a5){
  _0x2e8b16={
    _0xaeefff:0x23},_0x26cc50={
    _0x4331cf:0x32,_0x9180e1:0x1dc,_0x1b834a:0x610}
  ;
  if(!_0x5704a5.lastMessage)return;
  _0x550d8f.members.add(_0x5704a5.lastMember);
  const _0x3ec88b=_0x550d8f.messageInfo.onAdd({'chat':formatMessage(_0x5704a5.lastMessage),'memberKey':_0x5704a5.lastMember.key,'role':_0x5704a5.lastMember.status});
  _0x550d8f.roomInfo.onLastMessageChanged({'id':_0x179625,'messageId':_0x3ec88b.id});
}