package Ġcom . my ether wallet . me ww allet kit . core . util Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠB Art Well Ġon Ġ 1 4 . 0 5 . 2 0 1 9 . Ċ Ġ*/ Ċ Ċ class ĠBit Reader ( input : ĠByteArray ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbytes Ġ= Ġinput . clone () ĊĠĠĠ Ġprivate Ġvar Ġposition Ġ= Ġ 0 ĊĊĠĠĠ Ġfun Ġget ( range : ĠInt Range ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠ Ġskip ( range . first ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget ( range . count ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ( count : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbit Value Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbit Value Ġ= Ġbit Value Ġshl Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbit Value Ġ= Ġbit Value Ġor Ġget Bit ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbit Value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġskip ( count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġposition Ġ+= Ġcount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġposition Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Bit ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Byte Ġ= Ġ 0 xFF Ġand Ġbytes [ position Ġ/ Ġ 8 ]. toInt () ĊĠĠĠĠĠĠĠ Ġval Ġbit Index Ġ= Ġposition Ġ% Ġ 8 ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 x 0 1 Ġand Ġ( current Byte Ġshr Ġ 7 Ġ- Ġbit Index ) ĊĠĠĠ Ġ} Ċ }