package Ġcom . hand truth . mc . p aket Ċ Ċ import Ġkotlinx . io . Input Ċ import Ġkotlinx . io . Output Ċ Ċ class ĠList Codec < T >( val Ġinner : ĠCodec < T >) Ġ: ĠCodec < Mutable List < T >> Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmeasure ( value : ĠMutable List < T >) Ġ= Ġsize Var Int ( value . size ) Ġ+ Ġvalue . sum By Ġ{ Ġinner . measure ( it ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġread ( input : ĠInput , Ġold : ĠMutable List < T >? ): ĠMutable List < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġread Var Int ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġold ?. apply Ġ{ Ġclear () Ġ} Ġ?: Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ+= Ġinner . read ( input , Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġwrite ( output : ĠOutput , Ġvalue : ĠMutable List < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġvalue . size ĊĠĠĠĠĠĠĠ Ġwrite Var Int ( output , Ġsize ) ĊĠĠĠĠĠĠĠ Ġvalue . forEach Ġ{ Ġinner . write ( output , Ġit ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ