package Ġio . horizontal systems . bitcoin core . storage . migrations Ċ Ċ import Ġandroid . database . Cursor Ċ import Ġandroidx . room . migration . Migration Ċ import Ġandroidx . sqlite . db . Support SQLite Database Ċ import Ġio . horizontal systems . bitcoin core . models .* Ċ import Ġio . horizontal systems . bitcoin core . storage . Full Transaction Ċ import Ġio . horizontal systems . bitcoin core . storage . W itness Converter Ċ import Ġio . horizontal systems . bitcoin core . transactions . extract ors . IT rans action Output Provider Ċ import Ġio . horizontal systems . bitcoin core . transactions . extract ors . My Outputs Cache Ċ import Ġio . horizontal systems . bitcoin core . transactions . extract ors . Transaction Metadata Extractor Ċ import Ġjava . util . ArrayList Ċ Ċ object ĠMigration _ 1 2 _ 1 3 Ġ: ĠMigration ( 1 2 , Ġ 1 3 ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ__ w itness Converter Ġ= ĠW itness Converter () ĊĠĠĠ Ġprivate Ġval Ġ__ script Type Converter Ġ= ĠScript Type Converter () ĊĊĠĠĠ Ġoverride Ġfun Ġmigrate ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Table Transaction Metadata ( database ) ĊĠĠĠĠĠĠĠ Ġcreate Metadata For Existing Transactions ( database ) ĊĠĠĠĠĠĠĠ Ġdelete Invalid Transactions ( database ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Invalid Transactions ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" DELETE ĠFROM Ġ` Invalid Transaction ` ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Table Transaction Metadata ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ` Transaction Metadata ` Ġ(` amount ` ĠINTEGER ĠNOT ĠNULL , Ġ` type ` ĠINTEGER ĠNOT ĠNULL , Ġ` fee ` ĠINTEGER , Ġ` transaction Hash ` ĠBLOB ĠNOT ĠNULL , ĠPRIMARY ĠKEY (` transaction Hash ` )) ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Metadata For Existing Transactions ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransactions Ġ= Ġget Transactions ( database ) ĊĠĠĠĠĠĠĠ Ġval Ġinputs Ġ= Ġget Transaction Inputs ( database ) ĊĠĠĠĠĠĠĠ Ġval Ġoutputs Ġ= Ġget Transaction Outputs ( database ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmy Outputs Cache Ġ= ĠMy Outputs Cache (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( outputs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġoutput Provider Ġ= Ġobject Ġ: ĠI Transaction Output Provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( transaction Hash : ĠByteArray , Ġindex : ĠInt ): ĠTransaction Output ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoutputs . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . transaction Hash . content Equals ( transaction Hash ) Ġ&& Ġit . index Ġ== Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmetadata Extractor Ġ= ĠTransaction Metadata Extractor ( my Outputs Cache , Ġoutput Provider ) ĊĠĠĠĠĠĠĠ Ġtransactions . forEach Ġ{ Ġtransaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Inputs Ġ= Ġinputs . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . transaction Hash . content Equals ( transaction . hash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Outputs Ġ= Ġoutputs . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . transaction Hash . content Equals ( transaction . hash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfull Transaction Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFull Transaction ( transaction , Ġtransaction Inputs , Ġtransaction Outputs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata Extractor . extract ( full Transaction ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Transaction Metadata ( database , Ġfull Transaction . metadata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinsert Transaction Metadata ( database : ĠSupport SQLite Database , Ġmetadata : ĠTransaction Metadata ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . exec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" INSERT ĠOR ĠREPLACE ĠINTO Ġ` Transaction Metadata ` Ġ( transaction Hash , amount , type , fee ) ĠVALUES ( ?, Ġ?, Ġ?, Ġ? )", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( metadata . transaction Hash , Ġmetadata . amount , Ġmetadata . type . value , Ġmetadata . fee ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Transaction Outputs ( database : ĠSupport SQLite Database ): ĠList < Transaction Output > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ_ cursor Ġ= Ġdatabase . query (" SELECT Ġ* ĠFROM ĠTransaction Output ĠORDER ĠBY Ġrow Id ") ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Value Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Lock ing Script Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" lock ing Script ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Re deem Script Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" re deem Script ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Index Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" index ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Transaction Hash Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" transaction Hash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf PublicKey Path Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" publicKey Path ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Change Output Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" change Output ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Script Type Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" script Type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Key Hash Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" key Hash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Address Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" address ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Failed ToS pend Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" failed ToS pend ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Plugin Id Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" plugin Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Plugin Data Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" plugin Data ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ result : ĠMutable List < Transaction Output > Ġ= ĠArrayList (_ cursor . count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(_ cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ item : ĠTransaction Output ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item Ġ= ĠTransaction Output () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . value Ġ= Ġ_ cursor . getLong (_ cursor IndexOf Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . lock ing Script Ġ= Ġ_ cursor . get Blob (_ cursor IndexOf Lock ing Script ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . re deem Script Ġ= Ġ_ cursor . get Blob (_ cursor IndexOf Re deem Script ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . index Ġ= Ġ_ cursor . getInt (_ cursor IndexOf Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . transaction Hash Ġ= Ġ_ cursor . get Blob (_ cursor IndexOf Transaction Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . publicKey Path Ġ= Ġ_ cursor . getString (_ cursor IndexOf PublicKey Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . change Output Ġ= Ġ_ cursor . getInt (_ cursor IndexOf Change Output ) Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ tmp _ 1 Ġ= Ġif Ġ(_ cursor . isNull (_ cursor IndexOf Script Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cursor . getInt (_ cursor IndexOf Script Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ__ script Type Converter . from Int (_ tmp _ 1 )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . script Type Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . key Hash Ġ= Ġ_ cursor . get Blob (_ cursor IndexOf Key Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . address Ġ= Ġ_ cursor . getString (_ cursor IndexOf Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . failed ToS pend Ġ= Ġ_ cursor . getInt (_ cursor IndexOf Failed ToS pend ) Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . plugin Id Ġ= Ġif Ġ(_ cursor . isNull (_ cursor IndexOf Plugin Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cursor . get Short (_ cursor IndexOf Plugin Id ). to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . plugin Data Ġ= Ġ_ cursor . getString (_ cursor IndexOf Plugin Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ result . add (_ item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ result ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cursor . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Transaction Inputs ( database : ĠSupport SQLite Database ): ĠList < Transaction Input > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ_ cursor Ġ= Ġdatabase . query (" SELECT Ġ* ĠFROM ĠTransaction Input ") ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Transaction Hash Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" transaction Hash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Key Hash Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" key Hash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Address Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" address ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf W itness Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" w itness ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Previous Output Tx Hash Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" previous Output Tx Hash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Previous Output Index Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" previous Output Index ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Sig Script Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" sig Script ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Sequence Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" sequence ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ result : ĠMutable List < Transaction Input > Ġ= ĠArrayList (_ cursor . count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(_ cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ item : ĠTransaction Input ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item Ġ= ĠTransaction Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cursor . get Blob (_ cursor IndexOf Previous Output Tx Hash ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cursor . getLong (_ cursor IndexOf Previous Output Index ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cursor . get Blob (_ cursor IndexOf Sig Script ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cursor . getLong (_ cursor IndexOf Sequence ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . transaction Hash Ġ= Ġ_ cursor . get Blob (_ cursor IndexOf Transaction Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . key Hash Ġ= Ġ_ cursor . get Blob (_ cursor IndexOf Key Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . address Ġ= Ġ_ cursor . getString (_ cursor IndexOf Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . w itness Ġ= Ġ__ w itness Converter . to W itness (_ cursor . getString (_ cursor IndexOf W itness )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ result . add (_ item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ result ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cursor . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Transactions ( database : ĠSupport SQLite Database ): ĠList < Transaction > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ_ cursor Ġ= Ġdatabase . query (" SELECT Ġ* ĠFROM Ġ` Transaction ` ") ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Uid Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Hash Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" hash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Block Hash Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" block Hash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Version Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" version ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Lock Time Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" lock Time ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Timestamp Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" timestamp ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Order Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" order ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Is Mine Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" is Mine ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Is Outgoing Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" is Outgoing ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Seg wit Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" seg wit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Status Ġ= Ġget Column Index OrThrow (_ cursor , Ġ" status ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Serialized Tx Info Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" serialized Tx Info ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Conflict ing Tx Hash Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" conflict ing Tx Hash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ cursor IndexOf Raw Transaction Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Column Index OrThrow (_ cursor , Ġ" raw Transaction ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ result : ĠMutable List < Transaction > Ġ= ĠArrayList (_ cursor . count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(_ cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ item : ĠTransaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item Ġ= ĠTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . uid Ġ= Ġ_ cursor . getString (_ cursor IndexOf Uid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . hash Ġ= Ġ_ cursor . get Blob (_ cursor IndexOf Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . block Hash Ġ= Ġ_ cursor . get Blob (_ cursor IndexOf Block Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . version Ġ= Ġ_ cursor . getInt (_ cursor IndexOf Version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . lock Time Ġ= Ġ_ cursor . getLong (_ cursor IndexOf Lock Time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . timestamp Ġ= Ġ_ cursor . getLong (_ cursor IndexOf Timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . order Ġ= Ġ_ cursor . getInt (_ cursor IndexOf Order ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . is Mine Ġ= Ġ_ cursor . getInt (_ cursor IndexOf Is Mine ) Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . is Outgoing Ġ= Ġ_ cursor . getInt (_ cursor IndexOf Is Outgoing ) Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . seg wit Ġ= Ġ_ cursor . getInt (_ cursor IndexOf Seg wit ) Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . status Ġ= Ġ_ cursor . getInt (_ cursor IndexOf Status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . serialized Tx Info Ġ= Ġ_ cursor . getString (_ cursor IndexOf Serialized Tx Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . conflict ing Tx Hash Ġ= Ġ_ cursor . get Blob (_ cursor IndexOf Conflict ing Tx Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ item . raw Transaction Ġ= Ġ_ cursor . getString (_ cursor IndexOf Raw Transaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ result . add (_ item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ result ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cursor . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Column Index OrThrow ( c : ĠCursor , Ġname : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġc . getColumnIndex ( name ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ>= Ġ 0 Ġ-> Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġc . getColumnIndex OrThrow (" `$ name ` ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }