package Ġcom . me a qua . we ij un . ext Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . flow . flow On Ċ import Ġkotlinx . coroutines . flow . on Completion Ċ import Ġkotlinx . coroutines . flow . on Each Ċ Ċ /** Ċ Ġ* Ġhttps :// github . com / S aber Alpha / kotlin practice Ċ Ġ*/ Ċ fun Ġcount Down Cor outines ( total : Int , on Tick :( Int )-> Unit , on Finish : ()-> Unit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope : ĠCor outine Scope Ġ= ĠGlobal Scope ): ĠJob Ġ{ ĊĠĠĠ Ġreturn Ġflow { ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġtotal Ġdown To Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. flow On ( Dispatch ers . Default ) ĊĠĠĠĠĠĠĠ Ġ. on Completion Ġ{ Ġon Finish . invoke () Ġ} ĊĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġon Tick . invoke ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. flow On ( Dispatch ers . Main ) ĊĠĠĠĠĠĠĠ Ġ. launch In ( scope ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġfrom Json ( json : ĠString ): ĠT ? Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < T >() Ġ{} . type ĊĠĠĠĠĠĠĠ Ġreturn ĠGson (). fromJson ( json , Ġtype ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAny . toJson (): String { ĊĠĠĠ Ġreturn ĠGson (). toJson ( this ) Ċ }