package Ġnet . ball mer labs . scatter brains dk Ċ Ċ import Ġandroid . content . pm . Application Info Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconnection Ġto Ġthe ĠS cat ter brain ĠAPI . ĠThis Ġclass Ġshould Ġonly Ġbe Ġinjected Ġby Ċ Ġ* Ġdagger Ġonly . ĠBy Ġdefault Ġthis Ġclass Ġis Ġcreated Ġas Ġa Ġsingleton , Ġas Ġthere Ġis Ġlittle Ġvalue Ċ Ġ* Ġof Ġconcurrent Ġconnections Ġto ĠS cat ter brain Ċ Ġ*/ Ċ interface ĠB inder Wrapper Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġthe Ġscatter brain Ġrouter Ġif Ġstopped . ĠRequires ĊĠĠĠĠ Ġ* Ġnet . ball mer labs . scatter routing service . permission . ADMIN Ġpermission ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġstart Service () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSto ps Ġthe Ġscatter brain Ġrouter Ġif Ġstarted . ĠRequires ĊĠĠĠĠ Ġ* Ġnet . ball mer labs . scatter routing service . permission . ADMIN Ġpermission ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġstop Service () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġdisconnect s Ġfrom Ġthe Ġbinder Ġinterface ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġun bind Service () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġlist Ġof Ġall Ġknown Ġident ities . ĊĠĠĠĠ Ġ* Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ return Ġlist Ġof ĠIdentity Ġobjects ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun ĠgetId entities (): ĠList < Identity > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġsingle Ġidentity Ġby Ġfingerprint . ĊĠĠĠĠ Ġ* Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ return Ġidentity , Ġnull Ġif Ġfingerprint Ġnot Ġfound ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġget Identity ( fingerprint : ĠUUID ): ĠIdentity ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreturns Ġa Ġlist Ġof Ġall Ġstored Ġmessage Ġobjects Ġfor Ġa Ġgiven Ġapplication ĊĠĠĠĠ Ġ* Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ param Ġapplication Ġapplication Ġidentifier ĊĠĠĠĠ Ġ* Ġ@ return Ġlist Ġof Ġmessage Ġobjects Ġfor Ġapplication ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġget Scatter Messages ( application : ĠString ): ĠList < Scatter Message > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreturns Ġa Ġlist Ġof Ġall Ġstored Ġmessages Ġfor Ġa Ġgiven Ġapplication Ġafter Ġa Ġgiven Ġdate . ĊĠĠĠĠ Ġ* Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ param Ġapplication Ġapplication Ġidentifier ĊĠĠĠĠ Ġ* Ġ@ param Ġsince Ġrestrict Ġmessages Ġafter Ġthis Ġdate ĊĠĠĠĠ Ġ* Ġ@ return Ġlist Ġof Ġmessages Ġobjects ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġget Scatter Messages ( application : ĠString , Ġsince : ĠDate ): ĠList < Scatter Message > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreturns Ġa Ġlist Ġof Ġall Ġstored Ġmessages Ġfor Ġa Ġgiven Ġapplication Ġbetween Ġtwo Ġdates . ĊĠĠĠĠ Ġ* Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ param Ġapplication Ġapplication Ġidentifier ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Ġstart Ġdate ĊĠĠĠĠ Ġ* Ġ@ param Ġend Ġend Ġdata ĊĠĠĠĠ Ġ* Ġ@ return Ġlist Ġof Ġmessage Ġobjects ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġget Scatter Messages ( application : ĠString , Ġstart : ĠDate , Ġend : ĠDate ): ĠList < Scatter Message > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreturns Ġan Ġasynchronous Ġflow Ġof Ġident ities Ġreceived Ġafter Ġthis Ġfunction Ġis Ġcalled ĊĠĠĠĠ Ġ* Ġin Ġreal Ġtime . ĊĠĠĠĠ Ġ* Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ return Ġasync Ġflow Ġof Ġident ities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġobserve Id entities (): ĠFlow < List < Identity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreturns Ġan Ġasynchronous Ġflow Ġof Ġall Ġmessages Ġreceived Ġafter Ġthis Ġfunctions Ġis Ġcalled ĊĠĠĠĠ Ġ* Ġfiltered Ġby Ġa Ġgiven Ġapplication Ġidentifier . ĊĠĠĠĠ Ġ* Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ param Ġapplication Ġapplication Ġid en ifier ĊĠĠĠĠ Ġ* Ġ@ return Ġasync Ġflow Ġof Ġmessages ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġobserve Messages ( application : ĠString ): ĠFlow < List < Scatter Message >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġand Ġreturns Ġa Ġscatter brain Ġidentity Ġwith ĠACL s Ġmatching Ġthe Ġcalling Ġapplication Ġonly ĊĠĠĠĠ Ġ* ĠIf Ġadditional Ġapplications Ġneed Ġaccess Ġto Ġthis Ġidentity Ġthey Ġcan Ġbe Ġassigned Ġvia Ġthe ĠS cat ter brain ĊĠĠĠĠ Ġ* Ġapp . ĠThis Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġhuman Ġreadable Ġname Ġassociated Ġwith Ġidentity ĊĠĠĠĠ Ġ* Ġ@ return Ġhandle Ġto Ġidentity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġgenerate Identity ( name : ĠString ): ĠIdentity ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġlist Ġof ĠACL s Ġassociated Ġwith Ġa Ġgiven Ġidentity Ġobject . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . SUPER USER Ġpermission ĊĠĠĠĠ Ġ* Ġand Ġis Ġcurrently Ġnot Ġavailable Ġto Ġ 3 rd Ġparty Ġapplications ĊĠĠĠĠ Ġ* Ġ@ param Ġidentity Ġidentity Ġobject ĊĠĠĠĠ Ġ* Ġ@ return Ġlist Ġof ĠACL s ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġget Permissions ( identity : ĠIdentity ): ĠList < Name Package > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġan ĠACL Ġto Ġan Ġidentity Ġauthor izing Ġan Ġapp Ġto Ġuse Ġit . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . SUPER USER Ġand Ġis Ġcurrently ĊĠĠĠĠ Ġ* Ġnot Ġavailable Ġto Ġ 3 rd Ġparty Ġapplications ĊĠĠĠĠ Ġ* Ġ@ param Ġidentity Ġidentity Ġobject ĊĠĠĠĠ Ġ* Ġ@ param ĠpackageName Ġandroid Ġapp Ġpackage Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġauthorize Identity ( identity : ĠIdentity , ĠpackageName : ĠString ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġan ĠACL Ġauthor izing Ġan Ġapp Ġto Ġuse Ġan Ġidentity . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . SUPER USER Ġand Ġis Ġcurrently ĊĠĠĠĠ Ġ* Ġnot Ġavailable Ġto Ġ 3 rd Ġparty Ġapplications ĊĠĠĠĠ Ġ* Ġ@ param Ġidentity Ġidentity Ġobject ĊĠĠĠĠ Ġ* Ġ@ param ĠpackageName Ġandroid Ġapp Ġpackage Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġde authorize Identity ( identity : ĠIdentity , ĠpackageName : ĠString ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDeletes Ġan Ġidentity . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . SUPER USER Ġand Ġis Ġcurrently ĊĠĠĠĠ Ġ* Ġnot Ġavailable Ġto Ġ 3 rd Ġparty Ġapplications ĊĠĠĠĠ Ġ* Ġ@ param Ġidentity Ġidentity Ġobject ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġidentity Ġremoved ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġremove Identity ( identity : ĠIdentity ): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCrypto graph ically Ġsigns Ġdata Ġusing Ġa Ġstored Ġidentity . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ param Ġidentity Ġidentity Ġobject ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Ġbytes Ġto Ġsign ĊĠĠĠĠ Ġ* Ġ@ return Ġdet ached Ġed 2 5 5 1 9 Ġsignature ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġsign ( identity : ĠIdentity , Ġdata : ĠByteArray ): ĠByteArray ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCrypto graph ically Ġverifies Ġa Ġdet ached Ġsignature Ġusing Ġa Ġstored Ġidentity ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ param Ġidentity Ġidentity Ġobject Ġto Ġverify Ġwith ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Ġdata Ġto Ġverify ĊĠĠĠĠ Ġ* Ġ@ param Ġsig Ġdet ached Ġsignature Ġgenerated Ġby Ġsign () ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġvalid , Ġfalse Ġif Ġinvalid ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġverify ( identity : ĠIdentity , Ġdata : ĠByteArray , Ġsig : ĠByteArray ): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġactive Ġdiscovery Ġusing Ġdefault Ġtransport Ġmodules ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ADMIN Ġpermission ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġstart Discover () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSto ps Ġactive Ġdiscovery ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ADMIN Ġpermission ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġstop Discover () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġpassive Ġdiscovery Ġusing Ġthe Ġdefault Ġradio Ġmodule . ĠThis Ġusually Ġuses Ġless Ġpower ĊĠĠĠĠ Ġ* Ġthan Ġactive Ġdiscovery Ġfor Ġmost Ġtransport Ġmodules Ġbut Ġmay Ġskip Ġpeers Ġthat Ġare Ġalso Ġin ĊĠĠĠĠ Ġ* Ġpassive Ġmode ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ADMIN Ġpermission ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġstart Pass ive () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSto ps Ġpassive Ġdiscovery ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ADMIN Ġpermission ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġstop Pass ive () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEn queues Ġa ĠS cat ter brain Ġmessage Ġto Ġthe Ġdatastore . ĠThe Ġmessages Ġwill Ġbe Ġsent Ġas Ġsoon ĊĠĠĠĠ Ġ* Ġas Ġa Ġpeer Ġis Ġavailable ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage Ġmessage Ġto Ġsend ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun ĠsendMessage ( message : ĠS cat ter Message ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEn queues Ġa Ġmessage Ġto Ġthe Ġdatastore Ġand Ġsigns Ġit Ġwith Ġa Ġgiven Ġidentity . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġbut Ġthe Ġcalling Ġpackage Ġmust Ġhave Ġac ces ss Ġto Ġthe Ġidentity ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage Ġmessage Ġto Ġsend ĊĠĠĠĠ Ġ* Ġ@ param Ġidentity Ġidentity Ġto Ġsign Ġwith ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun ĠsendMessage ( message : ĠS cat ter Message , Ġidentity : ĠIdentity ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEn queues Ġa Ġmessage Ġto Ġthe Ġdatastore Ġand Ġsigns Ġit Ġwith Ġa Ġgiven Ġidentity . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġbut Ġthe Ġcalling Ġpackage Ġmust Ġhave Ġac ces ss Ġto Ġthe Ġidentity ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage Ġmessage Ġto Ġsend ĊĠĠĠĠ Ġ* Ġ@ param Ġidentity Ġidentity Ġto Ġsign Ġwith ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun ĠsendMessage ( message : ĠS cat ter Message , Ġidentity : ĠUUID ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEn queues Ġa Ġlist Ġof Ġmessages Ġto Ġthe Ġdatastore Ġand Ġsigns Ġit Ġwith Ġa Ġgiven Ġidentity . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġbut Ġthe Ġcalling Ġpackage Ġmust Ġhave Ġac ces ss Ġto Ġthe Ġidentity ĊĠĠĠĠ Ġ* Ġ@ param Ġmessages Ġmessages Ġto Ġsend ĊĠĠĠĠ Ġ* Ġ@ param Ġidentity Ġidentity Ġto Ġsign Ġwith ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun ĠsendMessage ( messages : ĠList < Scatter Message >, Ġidentity : ĠUUID ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEn queues Ġmultiple ĠS cat ter brain Ġmessages Ġto Ġthe Ġdatastore . ĠThe Ġmessages Ġwill Ġbe Ġsent Ġas Ġsoon ĊĠĠĠĠ Ġ* Ġas Ġa Ġpeer Ġis Ġavailable ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġ@ param Ġmessages Ġmessage Ġto Ġsend ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun ĠsendMessage ( messages : ĠList < Scatter Message >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEn queues Ġa Ġlist Ġof Ġmessages Ġto Ġthe Ġdatastore Ġand Ġsigns Ġit Ġwith Ġa Ġgiven Ġidentity . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . ACCESS Ġpermission ĊĠĠĠĠ Ġ* Ġbut Ġthe Ġcalling Ġpackage Ġmust Ġhave Ġac ces ss Ġto Ġthe Ġidentity ĊĠĠĠĠ Ġ* Ġ@ param Ġmessages Ġmessages Ġto Ġsend ĊĠĠĠĠ Ġ* Ġ@ param Ġidentity Ġidentity Ġto Ġsign Ġwith ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun ĠsendMessage ( messages : ĠList < Scatter Message >, Ġidentity : ĠIdentity ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġlist Ġof Ġpackages Ġdeclaring Ġa ĠS cat ter brain Ġcompatible ĠBroadcast Receiver . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequires Ġnet . ball mer labs . scatter routing service . permission . SUPER USER Ġpermission ĊĠĠĠĠ Ġ* Ġand Ġis Ġcurrently Ġnot Ġavailable Ġto Ġ 3 rd Ġparty Ġapplications ĊĠĠĠĠ Ġ* Ġ@ return Ġlist Ġof Ġpackage Ġnames ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġget Packages (): ĠList < Name Package > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers Ġthe Ġinternal ĠBroadcast Receiver Ġfor ĠS cat ter brain Ġevents . ĊĠĠĠĠ Ġ* ĠThis Ġmust Ġbe Ġcalled Ġto Ġuse Ġthe ĠS cat ter brain ĠSDK ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn registers ĠS cat ter brain Ġbroadcast Ġreceiv ers ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAt tempts Ġto Ġreconnect Ġto Ġknown Ġlocal Ġpeers ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġre scan Peers () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġthis ĠSDK Ġis Ġconnected Ġto Ġa Ġrunning ĠS cat ter brain Ġrouter ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġconnected ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġis Connected (): ĠBoolean ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Binder Wrapper " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠB IND _ ACTION Ġ= Ġ" net . ball mer labs . us cat ter brain . Scatter Routing Service . BIND " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠB IND _ PACKAGE Ġ= Ġ" net . ball mer labs . scatter routing service " ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠPair Ġof Ġapplication Ġname Ġand Ġmetadata Ċ Ġ* Ġ@ property Ġname Ġapplication Ġm ae Ċ Ġ* Ġ@ property Ġinfo Ġapplication Ġmetadata Ċ Ġ* Ġ@ constructor Ġcreates Ġa ĠName Package Ċ Ġ*/ Ċ data Ġclass ĠName Package ( ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġinfo : ĠApplication Info , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpm : ĠPackage Manager , ĊĠĠĠĠĠĠĠ Ġvar Ġicon : ĠDrawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠComparable < Name Package > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġload Icon (): ĠDrawable Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġinfo . load Icon ( pm ) ĊĠĠĠĠĠĠĠ Ġicon Ġ= Ġi ĊĠĠĠĠĠĠĠ Ġi ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠName Package ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġname . compareTo ( other . name ) ĊĠĠĠ Ġ} Ċ }