package Ġorg . kin . sdk . design . view Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġorg . kin . sdk . design . di . Activity Result Sink Ċ import Ġorg . kin . sdk . design . di . Resolver Ċ import Ġorg . kin . sdk . design . view model . Navigator Ċ import Ġjava . util . Random Ċ import Ġkotlin . math . absolute Value Ċ Ċ open Ġclass ĠActivity Navigator Base ( private Ġval Ġlaunch Activity : ĠActivity ) Ġ: ĠNavigator Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġresult Sink : ĠActivity Result Sink ? Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġ( launch Activity . application Ġas ĠResolver ). activity Result Sink ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlaunch Activity ( activity Class : ĠClass <* >, Ġbundle Builder : ĠBundle . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ Ġlaunch Activity ( activity Class , Ġ{ Ġ}, Ġbundle Builder ) ĊĊĠĠĠ Ġfun Ġlaunch Activity ( ĊĠĠĠĠĠĠĠ Ġactivity Class : ĠClass <* >, ĊĠĠĠĠĠĠĠ Ġmodify Intent : Ġ( Intent ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġbundle Builder : ĠBundle . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( launch Activity , Ġactivity Class ) ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠBundle () ĊĊĠĠĠĠĠĠĠ Ġb . bundle Builder () ĊĊĠĠĠĠĠĠĠ Ġintent . put Extras ( b ) ĊĊĠĠĠĠĠĠĠ Ġmodify Intent ( intent ) ĊĊĠĠĠĠĠĠĠ Ġlaunch Activity . startActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġlaunch Activity For Result ( ĊĠĠĠĠĠĠĠ Ġactivity Class : ĠClass <* >, ĊĠĠĠĠĠĠĠ Ġmodify Intent : Ġ( Intent ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġbundle Builder : ĠBundle . () Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġon Result : Ġ( result Code : ĠInt , Ġdata : ĠIntent ?) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt Ġ= ĠRandom ( System . currentTimeMillis ()). nextInt (). absolute Value Ġ% Ġ 6 5 5 3 5 ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( launch Activity , Ġactivity Class ) ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠBundle () ĊĊĠĠĠĠĠĠĠ Ġb . bundle Builder () ĊĊĠĠĠĠĠĠĠ Ġintent . put Extras ( b ) ĊĊĠĠĠĠĠĠĠ Ġmodify Intent ( intent ) ĊĊĠĠĠĠĠĠĠ Ġresult Sink ?. register ( request Code , Ġon Result Ġas Ġ( Int , ĠAny ?) Ġ-> ĠUnit ) ĊĊĠĠĠĠĠĠĠ Ġlaunch Activity . startActivity For Result ( intent , Ġrequest Code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Activity . finish () ĊĠĠĠ Ġ} Ċ } Ċ