package Ġio . ure f lect . app . activities Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . View Ċ import Ġcom . android . vol ley . Request Queue Ċ import Ġcom . android . vol ley . Response Ċ import Ġcom . android . vol ley . toolbox . Vol ley Ċ import Ġcom . google . gson . JsonObject Ċ import Ġio . ure f lect . app . R Ċ import Ġio . ure f lect . app . adapters . List Fragment Pager Adapter Ċ import Ġio . ure f lect . app . fragments .* Ċ import Ġio . ure f lect . app . fragments . Back Pressed Fragment . Companion . NOT _ HAND LED Ċ import Ġio . ure f lect . app . models . Mirror Model Ċ import Ġio . ure f lect . app . models . Profile Model Ċ import Ġio . ure f lect . app . services . Api Ċ import Ġio . ure f lect . app . services . err Msg Ċ import Ġio . ure f lect . app . services . is Expired Ċ import Ġio . ure f lect . app . utils . error Snackbar Ċ import Ġio . ure f lect . app . utils . get Arg Ċ import Ġio . ure f lect . app . utils . hide Keyboard Ċ import Ġio . ure f lect . app . utils . re Login Ċ import Ġkotlinx . android . synt hetic . main . activity _ new _ profile .* Ċ import Ġjava . util .* Ċ Ċ fun ĠContext . new Profile Intent ( mirror : ĠM irror Model ): ĠIntent Ġ= ĠIntent ( this , ĠNew Profile :: class . java ). apply Ġ{ Ġput Extra ( Mirror Model . TAG , Ġmirror ) Ġ} Ċ Ċ class ĠNew Profile Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" New Profile Activity " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprofile : ĠProfile Model ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġqueue : ĠRequest Queue ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmirror : ĠM irror Model ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠList Fragment Pager Adapter ĊĠĠĠ Ġprivate Ġvar Ġposition Ġ= ĠSteps . NAME . step ĊĠĠĠ Ġprivate Ġval Ġfragments Ġ= ĠArrayList < Coordinator Root Fragment >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtitle : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpin Code : ĠString ĊĠĠĠ Ġprivate Ġvar Ġskip Fac ial Ġ= Ġtrue ĊĊĠĠĠ Ġenum Ġclass ĠSteps ( val Ġstep : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNAME ( 0 ), ĊĠĠĠĠĠĠĠ ĠF AC IAL _ MSG ( 1 ), ĊĠĠĠĠĠĠĠ ĠF AC IAL _ SETUP ( 2 ), ĊĠĠĠĠĠĠĠ ĠPIN ( 3 ), ĊĠĠĠĠĠĠĠ ĠCOMP LETED ( 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ new _ profile ) ĊĠĠĠĠĠĠĠ Ġqueue Ġ= ĠVol ley . new Request Queue ( this ) ĊĊĠĠĠĠĠĠĠ Ġget Arg < Mirror Model >( Mirror Model . TAG )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmirror Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġfinish () ĊĊĠĠĠĠĠĠĠ Ġsetup Fragments () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġqueue . cancel All ( TAG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Fragments () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragments . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNew Profile Name Fragment Ġ{ Ġtitle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Profile Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext ( Steps . FAC IAL _ MSG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfragments . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNew Profile Fac ial Recognition Message Fragment ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext ( Steps . PIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip Fac ial Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext ( Steps . FAC IAL _ SETUP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip Fac ial Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfragments . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFac ial Recognition Setup Fragment ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext ( Steps . PIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġpath : ĠString , Ġcallback : Ġ() Ġ-> ĠUnit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Fac ial ( path ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfragments . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPin Fragment Ġ{ Ġcode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code Ġ= Ġcode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Pin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext ( Steps . COMPLETED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfragments . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNew Profile Completed Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink To Mirror () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠList Fragment Pager Adapter ( support FragmentManager , Ġfragments ) ĊĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġview Pager . currentItem Ġ= Ġposition ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnext ( step : ĠSteps ) Ġ{ ĊĠĠĠĠĠĠĠ Ġposition Ġ= Ġstep . step ĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ Ġview Pager . currentItem Ġ= Ġposition Ġ}, Ġ 1 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Profile ( callback : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfragments [ Steps . NAME . step ]. getRoot () ĊĠĠĠĠĠĠĠ Ġval Ġloader Ġ= Ġfragments [ Steps . NAME . step ]. get Loader () ĊĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġqueue . add ( Api . Profile . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJsonObject (). apply Ġ{ Ġadd Property (" title ", Ġtitle ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Listener Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Snackbar ( root , ĠgetString ( R . string . api _ parse _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error . is Expired ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre Login ( loader , Ġroot , Ġqueue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Profile ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Snackbar ( root , Ġerror . err Msg ( this , ĠgetString ( R . string . api _ parse _ error ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ Ġtag Ġ= ĠTAG Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Fac ial ( path : ĠString , Ġcallback : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfragments [ Steps . FAC IAL _ SETUP . step ]. getRoot () ĊĠĠĠĠĠĠĠ Ġval Ġloader Ġ= Ġfragments [ Steps . FAC IAL _ SETUP . step ]. get Loader () ĊĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġqueue . add ( Api . Profile . setup Faces ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile . ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrays . asList ( path ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error . is Expired ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre Login ( loader , Ġroot , Ġqueue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Fac ial ( path , Ġcallback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Snackbar ( root , Ġerror . err Msg ( this , ĠgetString ( R . string . api _ parse _ error ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ Ġtag Ġ= ĠTAG Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Pin ( callback : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfragments [ Steps . PIN . step ]. getRoot () ĊĠĠĠĠĠĠĠ Ġval Ġloader Ġ= Ġfragments [ Steps . PIN . step ]. get Loader () ĊĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġqueue . add ( Api . Profile . setup Pin ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile . ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJsonObject (). apply Ġ{ Ġadd Property (" pin ", Ġpin Code ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error . is Expired ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre Login ( loader , Ġroot , Ġqueue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Pin ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Snackbar ( root , Ġerror . err Msg ( this , ĠgetString ( R . string . api _ parse _ error ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ Ġtag Ġ= ĠTAG Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlink To Mirror () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfragments [ Steps . COMPLETED . step ]. getRoot () ĊĠĠĠĠĠĠĠ Ġval Ġloader Ġ= Ġfragments [ Steps . COMPLETED . step ]. get Loader () ĊĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġqueue . add ( Api . Mirror . link Profile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmirror . ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJsonObject (). apply Ġ{ Ġadd Property (" profile _ id ", Ġprofile . ID ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Listener Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Snackbar ( root , ĠgetString ( R . string . api _ parse _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error . is Expired ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre Login ( loader , Ġroot , Ġqueue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink To Mirror () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Snackbar ( root , Ġerror . err Msg ( this , ĠgetString ( R . string . api _ parse _ error ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ Ġtag Ġ= ĠTAG Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSteps . NAME . step Ġ-> Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSteps . FAC IAL _ MSG . step Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSteps . PIN . step Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( fragments [ position ] Ġas ĠBack Pressed Fragment ). back Pressed () Ġ== ĠNOT _ HAND LED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġwhen Ġ( skip Fac ial ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> ĠSteps . FAC IAL _ MSG . step ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSteps . FAC IAL _ SETUP . step ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . currentItem Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSteps . FAC IAL _ SETUP . step Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( fragments [ position ] Ġas ĠBack Pressed Fragment ). back Pressed () Ġ== ĠNOT _ HAND LED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠSteps . FAC IAL _ MSG . step ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . currentItem Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSteps . COMPLETED . step Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . currentItem Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ