package Ġcom . sc . les a . medi ash ar . j lib . io Ċ Ċ import Ġjava . io . Data Input Ċ import Ġjava . io . Data Output Ċ Ċ class ĠData Pack () Ġ: Writable Ġ{ ĊĠĠĠ Ġvar Ġtype : Int = 0 ĊĠĠĠ Ġlateinit Ġvar ĠbyteArray : ĠByteArray ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġval ĠTYPE _ VIDEO = 1 ĊĠĠĠĠĠĠĠ Ġval ĠTYPE _ VOICE = 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( var 1 : ĠData Input ): this (){ ĊĠĠĠĠĠĠĠ Ġread Fields ( var 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( type : Int , byteArray : ĠByteArray ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . type = type ĊĠĠĠĠĠĠĠ Ġthis . byteArray = byteArray ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite ( var 1 : ĠData Output ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar 1 . writeInt ( type ) ĊĠĠĠĠĠĠĠ Ġvar 1 . writeInt ( byteArray . size ) ĊĠĠĠĠĠĠĠ Ġvar 1 . write ( byteArray ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread Fields ( var 1 : ĠData Input ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtype = var 1 . readInt () ĊĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġvar 1 . readInt () ĊĠĠĠĠĠĠĠ ĠbyteArray = ĠByteArray ( len ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlen Ġ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbyteArray [ i ]= var 1 . read Byte () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Video Pack (): Boolean { ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠTYPE _ VIDEO ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġis Voice Pack (): Boolean { ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠTYPE _ VOICE ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ Ċ }