package Ġcom . hp . j ipp . p dl . util Ċ Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream Ċ Ċ /** ĠFor Ġevery Ġbyte Ġread Ġfrom Ġ[ source ], Ġalso Ġwrite Ġto Ġa Ġ[ duplicate ] Ġ[ OutputStream ]. Ġ*/ Ċ class ĠT ee InputStream ( ĊĠĠĠ Ġ/** ĠClosed Ġwhen Ġthis Ġstream Ġis Ġclosed . Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġsource : ĠInputStream , ĊĠĠĠ Ġ/** ĠDestination Ġfor Ġall Ġbytes Ġread Ġfrom Ġ[ source ], Ġleft Ġopen Ġafter Ġthis Ġstream Ġis Ġclosed . Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġduplicate : ĠOutputStream Ċ ) Ġ: ĠInputStream () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġread () Ġ= ĊĠĠĠĠĠĠĠ Ġsource . read (). also Ġ{ Ġduplicate . write ( it ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġavailable () Ġ= Ġsource . available () ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġsource . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmark ( read limit : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource . mark ( read limit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmark Supported () Ġ= Ġsource . mark Supported () ĊĊĠĠĠ Ġoverride Ġfun Ġread ( bytes : ĠByteArray , Ġoffset : ĠInt , Ġlength : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġsource . read ( bytes , Ġoffset , Ġlength ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduplicate . write ( bytes , Ġoffset , Ġlength ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread ( bytes : ĠByteArray ) Ġ= ĊĠĠĠĠĠĠĠ Ġsource . read ( bytes ). also Ġ{ Ġduplicate . write ( bytes ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġsource . reset () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġskip ( length : ĠLong ) Ġ= Ġsource . skip ( length ) Ċ } Ċ