package Ġcom . google . samples . quickstart . signin Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . design . widget . Tab Layout Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . app . Fragment Activity Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . app . Fragment Pager Adapter Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . google . api . client . googleapis . extensions . android . gms . auth . Google Account Credential Ċ import Ġcom . google . api . client . util . Exponent ial Back Off Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . util .* ĊĊĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ android . support . v 4 . view . Pager Adapter ] Ġthat Ġwill Ġprovide ĊĠĠĠĠ Ġ* Ġfragments Ġfor Ġeach Ġof Ġthe Ġsections . ĠWe Ġuse Ġa ĊĠĠĠĠ Ġ* Ġ{@ link ĠFragment Pager Adapter } Ġderivative , Ġwhich Ġwill Ġkeep Ġevery ĊĠĠĠĠ Ġ* Ġloaded Ġfragment Ġin Ġmemory . ĠIf Ġthis Ġbecomes Ġtoo Ġmemory Ġint ensive , Ġit ĊĠĠĠĠ Ġ* Ġmay Ġbe Ġbest Ġto Ġswitch Ġto Ġa ĊĠĠĠĠ Ġ* Ġ[ android . support . v 4 . app . Fragment State Pager Adapter ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Sections Pager Adapter : ĠSe ctions Pager Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġadapter Ġthat Ġwill Ġreturn Ġa Ġfragment Ġfor Ġeach Ġof Ġthe Ġthree ĊĠĠĠĠĠĠĠ Ġ// Ġprimary Ġsections Ġof Ġthe Ġactivity . ĊĠĠĠĠĠĠĠ Ġm Sections Pager Adapter Ġ= ĠSe ctions Pager Adapter ( support FragmentManager ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe ĠView Pager Ġwith Ġthe Ġsections Ġadapter . ĊĠĠĠĠĠĠĠ Ġcontainer . adapter Ġ= Ġm Sections Pager Adapter ĊĊĊĠĠĠĠĠĠĠ Ġcontainer . add On Page ChangeListener ( Tab Layout . Tab Layout On Page ChangeListener ( tabs )) ĊĠĠĠĠĠĠĠ Ġtabs . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Tab Selected Listener ( Tab Layout . ViewPager On Tab Selected Listener ( container )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetSelected Tab Indicator Color ( Context Compat . getColor ( this . context , ĠR . color . background )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Tab At ( 0 ) !!. setIcon ( R . drawable . home ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Tab At ( 1 ) !!. setIcon ( R . drawable . event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Tab At ( 2 ) !!. setIcon ( R . drawable . info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġ" Replace Ġwith Ġyour Ġown Ġaction ", ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction (" Action ", Ġnull ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠSign In Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" back Clicked ", Ġtrue ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . action _ settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġ[ Fragment Pager Adapter ] Ġthat Ġreturns Ġa Ġfragment Ġcorresponding Ġto ĊĠĠĠĠ Ġ* Ġone Ġof Ġthe Ġsections / tabs / pages . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠSe ctions Pager Adapter ( fm : ĠFragment Manager ) Ġ: ĠFragment Pager Adapter ( fm ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠgetItem Ġis Ġcalled Ġto Ġinstantiate Ġthe Ġfragment Ġfor Ġthe Ġgiven Ġpage . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturn Ġa ĠHome Ġ( defined Ġas Ġa Ġstatic Ġinner Ġclass Ġbelow ). ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" hi ", Ġ"" + position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġreturn ĠHome . newInstance ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġreturn ĠEvents . newInstance ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġreturn ĠInfo . newInstance ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInfo . newInstance ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Show Ġ 3 Ġtotal Ġpages ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= Ġ 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġplaceholder Ġfragment Ġcontaining Ġa Ġsimple Ġview . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠHome Ġ: ĠFragment () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// root View . section _ label . text Ġ= ĠgetString ( R . string . section _ format , Ġarguments . getInt ( ARG _ SECTION _ NUMBER )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot View : ĠView Ġ= Ġinflater . inflate ( R . layout . fragment _ main , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( root View . findViewById ( R . id . home Title ) Ġas ĠTextView ). text Ġ= ĠSign In Activity . m Account . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġfragment Ġargument Ġrepresenting Ġthe Ġsection Ġnumber Ġfor Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġfragment . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠARG _ SECTION _ NUMBER Ġ= Ġ" section _ number " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġa Ġnew Ġinstance Ġof Ġthis Ġfragment Ġfor Ġthe Ġgiven Ġsection ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġnumber . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( section Number : ĠInt ): ĠHome Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠHome () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Int ( ARG _ SECTION _ NUMBER , Ġsection Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠEvents : ĠFragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Credential : ĠGoogle Account Credential ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ events , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Credential Ġ= ĠGoogle Account Credential . using OAuth 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĠArrays . asList (* SignIn Activity . SCOPES )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Back Off ( Exponent ial Back Off ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Credential . selected Account Ġ= ĠSign In Activity . m Account . account ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMake Request Task ( m Credential , Ġactivity , Ġ" Sheet 1 ", Ġ" 1 u Tx Oe 8 usr x 7 o 4 6 0 t H 3 BAL 5 i P ZR Vm Ey ulk Io y GH a _ Fs Q "). execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// set All View Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġinner Ġclass ĠMake Request Task Ġinternal Ġconstructor ( credential : ĠGoogle Account Credential , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity : ĠFragment Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString ) Ġ: ĠSp readsheet Integration ( credential , Ġactivity , Ġrange , Ġid ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" n ig ger ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠARG _ SECTION _ NUMBER Ġ= Ġ" section _ number " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( section Number : ĠInt ): ĠEvents Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠEvents () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Int ( ARG _ SECTION _ NUMBER , Ġsection Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠInfo Ġ: ĠFragment (), ĠView . OnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġimg : ĠImageView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġuri Strings : ĠMap < Int , ĠString > Ġ= Ġmap Of ( R . id . join button Ġto Ġ" https :// goo . gl / forms / k 9 u H cl WR 4 j az Jj Yj 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . website button Ġto Ġ" https :// or hs interact . com ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . res cour ces button Ġto Ġ" https :// drive . google . com / folder view ? id = 0 Bw JL vd TM 6 Ac 4 U Wl q SH l K TG hx RF k & usp = sharing ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . github button Ġto Ġ" https :// github . com / OR HS - Web - App - Dev ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġinflater . inflate ( R . layout . fragment _ info , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg Ġ= Ġroot View . findViewById < View >( R . id . about WA AD ) Ġas ĠImageView ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠButton Ġlisteners ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < View >( R . id . about WA AD ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < View >( R . id . join button ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < View >( R . id . website button ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < View >( R . id . res cour ces button ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < View >( R . id . github button ). setOnClickListener ( this ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . id Ġ== ĠR . id . about WA AD ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( counter Ġ> Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġm Player . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg ?. setImage Resource ( R . mip map . about wa ad ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse ( uri Strings [ v . id ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠARG _ SECTION _ NUMBER Ġ= Ġ" section _ number " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( section Number : ĠInt ): ĠInfo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠInfo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Int ( ARG _ SECTION _ NUMBER , Ġsection Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ