/** Ċ Ġ* ĠB read Wallet Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠD rew ĠCar l son Ġ< d rew . car l son @ bread wallet . com > Ġon Ġ 2 / 2 7 / 2 0 . Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġb read wallet ĠLLC Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġcom . x wallet . util Ċ Ċ import Ġcom . x wallet . tools . crypto . Crypto Helper . hex Encode Ċ import Ġcom . x wallet . tools . crypto . Crypto Helper . ke cc ak 2 5 6 Ċ import Ġcom . x wallet . tools . util . Event Utils Ċ import Ġcom . google . firebase . crash ly t ics . Firebase Crash ly t ics Ċ Ċ private Ġconst Ġval ĠETH _ ADDRESS _ BYTES Ġ= Ġ 2 0 Ċ Ċ fun ĠByteArray ?. pub Key To Eth Address (): ĠString ? Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġthis Ġ== Ġnull Ġ|| ĠisEmpty () Ġ-> Ġnull ĊĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaddress Bytes Ġ= Ġke cc ak 2 5 6 ( slice Array ( 1 .. last Index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take Last ( ETH _ ADDRESS _ BYTES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . toByteArray () ĊĠĠĠĠĠĠĠ Ġif Ġ( address Bytes ?. size Ġ== ĠETH _ ADDRESS _ BYTES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 x ${ hex Encode ( address Bytes )}" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġsend Mismatch Event ( ĊĠĠĠ Ġeth Address Hash : ĠString , ĊĠĠĠ Ġrewards Id Hash : ĠString , ĊĠĠĠ Ġeth Balance : ĠString , ĊĠĠĠ Ġtoken Balances : ĠList < Pair < String , ĠString >> Ċ ) Ġ{ ĊĠĠĠ Ġval Ġtokens Ġ= Ġtoken Balances . map Ġ{ Ġ( currency Code , Ġbalance ) Ġ-> ĊĠĠĠĠĠĠĠ Ġ" has _ balance _$ currency Code " Ġto Ġbalance String ( balance ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġcom . x wallet . tools . util . Event Utils . push Event ( ĊĠĠĠĠĠĠĠ Ġcom . x wallet . tools . util . Event Utils . EVENT _ PUB _ KEY _ MIS MATCH , ĊĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom . x wallet . tools . util . Event Utils . EVENT _ ATTRIBUTE _ RE WAR DS _ ID _ HASH Ġto Ġrewards Id Hash , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom . x wallet . tools . util . Event Utils . EVENT _ ATTRIBUTE _ ADDRESS _ HASH Ġto Ġeth Address Hash , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" has _ balance _ eth " Ġto Ġbalance String ( eth Balance ) ĊĠĠĠĠĠĠĠ Ġ) Ġ+ Ġtokens ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠFirebase Crash ly t ics . getInstance (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (" rewards _ id _ hash Ġ= Ġ$ rewards Id Hash ") ĊĠĠĠĠĠĠĠ Ġlog (" old _ address _ hash Ġ= Ġ$ eth Address Hash ") ĊĠĠĠĠĠĠĠ Ġlog (" has _ balance _ eth Ġ= Ġ${ balance String ( eth Balance )} ") ĊĠĠĠĠĠĠĠ Ġtokens . forEach Ġ{ Ġ( key , Ġbalance ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog ("$ key Ġ= Ġ$ balance ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrecord Exception ( IllegalStateException (" eth Ġaddress Ġmismatch ")) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġbalance String ( string : ĠString ) Ġ= Ġwhen Ġ( string ) Ġ{ ĊĠĠĠ Ġ" unknown " Ġ-> Ġ" unknown " ĊĠĠĠ Ġ" 0 x 0 ", Ġ" 0 " Ġ-> Ġ" no " ĊĠĠĠ Ġelse Ġ-> Ġ" yes " Ċ } Ċ