package Ġcom . ke vin most . k ool bel t . extension Ċ Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . net . URI Ċ Ċ fun ĠURI . read To ByteArray ( estimated Size InBytes : ĠInt Ġ= ĠDEFAULT _ BUFFER _ SIZE ): ĠRead URI Result Ġ{ ĊĠ Ġtry Ġ{ ĊĠĠĠ Ġreturn ĠRead URI Result . Success ( to URL (). open Stream (). read To ByteArray ( estimated Size InBytes ), Ġthis ) ĊĠ Ġ} Ġcatch ( e : ĠIOException ) Ġ{ ĊĠĠĠ Ġreturn ĠRead URI Result . Failure ( e , Ġthis ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠInputStream . read To ByteArray ( estimated Size InBytes : ĠInt ): ĠByteArray Ġ{ ĊĠ Ġreturn Ġuse Ġ{ Ġread Bytes ( estimated Size InBytes ) Ġ} Ċ } Ċ Ċ sealed Ġclass ĠRead URI Result ( val Ġuri : ĠURI ) Ġ{ ĊĠ Ġclass ĠSuccess ( val Ġbytes : ĠByteArray , Ġuri : ĠURI ) Ġ: ĠRead URI Result ( uri ) Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġcomponent 1 () Ġ= Ġbytes ĊĠ Ġ} ĊĊĠ Ġclass ĠFailure ( val Ġerr : ĠIOException , Ġuri : ĠURI ) Ġ: ĠRead URI Result ( uri ) Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġcomponent 1 () Ġ= Ġerr ĊĠ Ġ} ĊĊĠ Ġoperator Ġfun Ġcomponent 2 () Ġ= Ġuri ĊĊĠ Ġfun Ġget If Successful (): ĠSuccess ? Ġ= Ġthis Ġas ? ĠSuccess Ċ } Ċ