package Ġcom . pol ito . s ism ic . Extensions Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . widget . Toast Ċ import Ġcom . pol ito . s ism ic . Present ers . Adapters . Report Fragments Adapter Ċ import Ġcom . step stone . step per . adapter . Step Adapter Ċ import Ġorg . jetbrains . ank o . db . Map Row Parser Ċ import Ġorg . jetbrains . ank o . db . Select QueryBuilder Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlin . reflect . K Property Ċ import Ġandroid . provider . Open able Columns Ċ import Ġandroid . view .* Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġcom . github . mike phil . chart ing . data . Entry Ċ import Ġcom . pol ito . s ism ic . Domain .* Ċ import Ġandroid . widget . EditText ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠMat te o Ġon Ġ 0 7 / 0 8 / 2 0 1 7 . Ċ Ġ*/ Ċ Ċ // Context Ġextensions Ċ fun ĠContext . toast ( resourceId : ĠInt ) Ġ= Ġtoast ( getString ( resourceId )) Ċ Ċ fun ĠContext . toast ( message : ĠCharSequence ) Ġ= ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġmessage , ĠToast . LENGTH _ SHORT ). show () Ċ Ċ inline Ġfun ĠSharedPreferences . edit ( func : ĠSharedPreferences . Editor . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġeditor Ġ= Ġedit () ĊĠĠĠ Ġeditor . func () ĊĠĠĠ Ġeditor . apply () Ċ } Ċ Ċ object ĠDeleg ates Ext Ġ{ ĊĠĠĠ Ġfun Ġ< T > Ġnot Null Single Value () Ġ= ĠNot Null Single Value Var < T >() ĊĠĠĠ Ġfun Ġ< T > Ġpreference ( context : ĠContext , Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault : ĠT ) Ġ= ĠPreference ( context , Ġname , Ġdefault ) Ċ } Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠSelect QueryBuilder . parse List ( parser : Ġ( Map < String , ĠAny ?> ) Ġ-> ĠT ): ĠList < T > Ġ= ĊĠĠĠĠĠĠĠ Ġparse List ( object Ġ: ĠMap Row Parser < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparse Row ( columns : ĠMap < String , ĠAny ?> ): ĠT Ġ= Ġparser ( columns ) ĊĠĠĠĠĠĠĠ Ġ}) Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠSelect QueryBuilder . parse Opt ( parser : Ġ( Map < String , ĠAny ?> ) Ġ-> ĠT ): ĠT ? Ġ= ĊĠĠĠĠĠĠĠ Ġparse Opt ( object Ġ: ĠMap Row Parser < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparse Row ( columns : ĠMap < String , ĠAny ?> ): ĠT Ġ= Ġparser ( columns ) ĊĠĠĠĠĠĠĠ Ġ}) Ċ Ċ fun ĠSQLite Database . clear ( tableName : ĠString ) Ġ{ ĊĠĠĠ Ġexec SQL (" delete Ġfrom Ġ$ tableName ") Ċ } Ċ Ċ fun ĠSelect QueryBuilder . by Id ( id : ĠString ) Ġ= Ġwhere Simple ("_ id Ġ= Ġ?", Ġid ) Ċ fun ĠSelect QueryBuilder . by Report Id ( id : ĠString ) Ġ= Ġwhere Simple (" report _ id Ġ= Ġ?", Ġid ) Ċ Ċ class ĠNot Null Single Value Var < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġvalue : ĠT ? Ġ= Ġnull ĊĊĠĠĠ Ġoperator Ġfun ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property < *> ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue Ġ?: Ġthrow ĠIllegalStateException ("${ property . name } Ġnot Ġinitialized ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun ĠsetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >, Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġif Ġ( this . value Ġ== Ġnull ) Ġvalue ĊĠĠĠĠĠĠĠ Ġelse Ġthrow ĠIllegalStateException ("${ property . name } Ġalready Ġinitialized ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠPreference < T >( val Ġcontext : ĠContext , Ġval Ġname : ĠString , Ġval Ġdefault : ĠT ) Ġ{ ĊĊĠĠĠ Ġval Ġprefs : ĠSharedPreferences Ġby Ġlazy Ġ{ Ġcontext . get SharedPreferences (" default ", ĠContext . MODE _ PRIVATE ) Ġ} ĊĊĠĠĠ Ġoperator Ġfun ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property < *> ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfind Preference ( name , Ġdefault ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun ĠsetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >, Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput Preference ( name , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġfind Preference ( name : ĠString , Ġdefault : ĠT ): ĠT Ġ= Ġwith ( prefs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres : ĠAny Ġ= Ġwhen Ġ( default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġget Long ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> ĠgetString ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġget Int ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġget Boolean ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġget Float ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" This Ġtype Ġcan Ġbe Ġsaved Ġinto ĠPreferences ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġres Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Commit Pref Ed its ") ĊĠĠĠ Ġprivate Ġfun Ġput Preference ( name : ĠString , Ġvalue : ĠT ) Ġ= Ġwith ( prefs . edit ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġput Long ( name , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġput String ( name , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġput Int ( name , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġput Boolean ( name , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġput Float ( name , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" This Ġtype Ġcan 't Ġbe Ġsaved Ġinto ĠPreferences ") ĊĠĠĠĠĠĠĠ Ġ}. apply () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . to Formatted Date (): ĠDate Ġ{ ĊĠĠĠ Ġreturn ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss Ġ"). parse ( this ) Ċ } Ċ Ċ fun ĠDate . to Formatted String (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss Ġ"). format ( this ) Ċ } Ċ Ċ fun Ġ< K , ĠV Ġ: ĠAny > ĠMap < K , ĠV ?> . to Var arg Array (): ĠArray < out ĠPair < K , ĠV >> Ġ= ĊĠĠĠĠĠĠĠ Ġmap ({ ĠPair ( it . key , Ġit . value !! ) Ġ}). to Typed Array () Ċ Ċ fun ĠBundle . put Report ( state : ĠReport ) Ġ{ ĊĠĠĠ Ġput Parcelable (" report _ state ", Ġstate ) Ċ } Ċ Ċ fun ĠBundle . get Report (): ĠReport ? Ġ{ ĊĠĠĠ Ġreturn Ġget Parcelable (" report _ state ") Ċ } Ċ Ċ fun ĠViewGroup . inflate ( layout Res : ĠInt ): ĠView Ġ{ ĊĠĠĠ Ġreturn ĠLayoutInflater . from ( context ). inflate ( layout Res , Ġthis , Ġfalse ) Ċ } Ċ Ċ fun ĠDouble . get Power Of Two For Sample Ratio (): ĠInt Ġ{ ĊĠĠĠ Ġval Ġk Ġ= ĠInteger . highest One Bit ( Math . floor ( this ). toInt ()) ĊĠĠĠ Ġif Ġ( k Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġreturn Ġk Ċ } Ċ Ċ fun ĠStep Adapter . get Custom Adapter (): ĠReport Fragments Adapter Ġ{ ĊĠĠĠ Ġreturn Ġthis Ġas ĠReport Fragments Adapter Ċ } Ċ Ċ fun ĠNe ighbours Node Square . toList (): ĠList < Ne ighbours Node Data > Ġ{ ĊĠĠĠ Ġreturn ĠlistOf ( NE , ĠNO , ĠSO , ĠSE ) Ċ } Ċ Ċ fun ĠUri . get FileName ( mContext : ĠContext ): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġreturn Cursor Ġ= ĠmContext . content Resolver . query ( this , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠ Ġval Ġname Index Ġ= Ġreturn Cursor . getColumnIndex ( Open able Columns . DISPLAY _ NAME ) ĊĠĠĠ Ġreturn Cursor . moveTo First () ĊĠĠĠ Ġval Ġfilename Ġ= Ġreturn Cursor . getString ( name Index ) ĊĠĠĠ Ġreturn Cursor . close () ĊĠĠĠ Ġreturn Ġfilename Ċ } Ċ Ċ fun ĠUri . getSize In Mb ( mContext : ĠContext ): ĠDouble Ġ{ ĊĠĠĠ Ġval Ġreturn Cursor Ġ= ĠmContext . content Resolver . query ( this , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠ Ġreturn Cursor . moveTo First () ĊĠĠĠ Ġval Ġsize Index Ġ= Ġreturn Cursor . getLong ( return Cursor . getColumnIndex ( Open able Columns . SIZE )) ĊĠĠĠ Ġreturn Cursor . close () ĊĠĠĠ Ġval Ġdouble Size Index Ġ= Ġsize Index . toDouble () ĊĠĠĠ Ġreturn Ġdouble Size Index Ġ/ Ġ 1 0 2 4 Ġ/ Ġ 1 0 2 4 Ċ } Ċ Ċ fun ĠUri . get Media Path ( mContext : ĠContext ): ĠString Ġ{ ĊĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( Media Store . Images . Media . DATA ) ĊĠĠĠ Ġval Ġcursor Ġ= ĠmContext . content Resolver . query ( this , Ġprojection , Ġnull , Ġnull , Ġnull ) ĊĠĠĠ Ġval Ġcolumn _ index Ġ= Ġcursor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getColumnIndex OrThrow ( Media Store . Images . Media . DATA ) ĊĠĠĠ Ġcursor . moveTo First () ĊĠĠĠ Ġval Ġto Return Ġ= Ġcursor . getString ( column _ index ) ĊĠĠĠ Ġcursor . close () ĊĠĠĠ Ġreturn Ġto Return Ċ } Ċ Ċ fun ĠString . to Uri (): ĠUri Ġ{ ĊĠĠĠ Ġreturn ĠUri . parse ( this ) Ċ } Ċ Ċ fun ĠList < Entry >. to Spectrum Point List (): ĠList < Spectrum Point > Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ ĠSpect rum Point ( it . x . toDouble (), Ġit . y . toDouble ()) Ġ} Ċ } ĊĊ Ċ fun ĠList < Spectrum Point >. to Entry List (): ĠList < Entry > Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ ĠEntry ( it . x . toFloat (), Ġit . y . toFloat ()) Ġ} Ċ } Ċ Ċ fun ĠPeriod Data . interpolate With ( next : ĠPeriod Data , Ġnew Year : ĠInt ): ĠPeriod Data Ġ{ ĊĠĠĠ Ġval Ġnew Ag Ġ= ĠMath U ti . period Data Interpolation ( ag , Ġnext . ag , Ġyears , Ġnext . years , Ġnew Year ) ĊĠĠĠ Ġval Ġnew F 0 Ġ= ĠMath U ti . period Data Interpolation ( f 0 , Ġnext . f 0 , Ġyears , Ġnext . years , Ġnew Year ) ĊĠĠĠ Ġval Ġnew Tc Star Ġ= ĠMath U ti . period Data Interpolation ( tc star , Ġnext . tc star , Ġyears , Ġnext . years , Ġnew Year ) ĊĠĠĠ Ġreturn ĠPeriod Data ( new Year , Ġnew Ag , Ġnew F 0 , Ġnew Tc Star ) Ċ } Ċ Ċ fun ĠString . toDouble Or Zero (): ĠDouble Ġ{ ĊĊĠĠĠ Ġreturn Ġif Ġ( isEmpty ()) Ġ 0 . 0 Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtmp Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġtmp Ġ= Ġtmp . replace (",", Ġ". ") ĊĠĠĠĠĠĠĠ Ġreturn Ġtmp . toDouble () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . toInt Or Zero (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( isEmpty ()) Ġ 0 Ġelse Ġto Int () Ċ } Ċ Ċ fun ĠDouble . toString OrEmpty (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( this Ġ== Ġ 0 . 0 ) Ġ"" Ġelse ĠtoString () Ċ } Ċ Ċ fun ĠInt . toString OrEmpty (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( this Ġ== Ġ 0 ) Ġ"" Ġelse ĠtoString () Ċ } Ċ Ċ // better Ġsafe Ġthan Ġsorry Ċ fun ĠActivity . hide Soft Keyboard () Ġ{ ĊĠĠĠ Ġval Ġinput Manager Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠ Ġinput Manager ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Focus Ġ!= Ġnull Ġ&& Ġcurrent Focus . window Token Ġ!= Ġnull Ġ&& Ġwindow Ġ!= Ġnull ) Ġit . hide Soft Input From Window ( current Focus . window Token , ĠInput Method Manager . HIDE _ NOT _ ALWAYS ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠActivity . show Soft Keyboard () Ġ{ ĊĠĠĠ Ġval Ġimm Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠ Ġimm ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Focus Ġ!= Ġnull Ġ&& Ġwindow Ġ!= Ġnull ) Ġit . toggle Soft Input ( Input Method Manager . SHOW _ IMP LICIT , Ġ 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠEditText . on Confirm ( callback : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġset On Editor ActionListener Ġ{ Ġ_, Ġaction Id , Ġevent Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ SEARCH Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Id Ġ== ĠEditor Info . IME _ ACTION _ NEXT Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Id Ġ== ĠEditor Info . IME _ ACTION _ DONE Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent ?. action Ġ== ĠKeyEvent . ACTION _ DOWN Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent ?. keyCode Ġ== ĠKeyEvent . KEYCODE _ ENTER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . to Plant Point List (): ĠList < Plant Point > Ġ{ ĊĠĠĠ Ġval Ġpoint List Ġ= Ġsplit (" Ġ") ĊĠĠĠ Ġreturn Ġpoint List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . isEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġit . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPl ant Point ( pair [ 0 ]. toDouble (), Ġpair [ 1 ]. toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠList < Plant Point >. to Par s able Plant String (): ĠString Ġ{ ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . append ( it . x . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . y . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (" Ġ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsb . toString () Ċ } Ċ Ċ fun ĠString . to P ill ar Domain Point List (): ĠList < P ill ar Domain Graph Point > Ġ{ ĊĠĠĠ Ġval Ġpoint List Ġ= Ġsplit (" Ġ") ĊĠĠĠ Ġreturn Ġpoint List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . isEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġit . split (",") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP ill ar Domain Graph Point ( pair [ 0 ]. toDouble (), Ġpair [ 1 ]. toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠList < P ill ar Domain Graph Point >. to Par s able P ill ar Domain Point String (): ĠString Ġ{ ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . append ( it . n . toString ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . m . toString ()) ĊĠĠĠĠĠĠĠ Ġsb . append (" Ġ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsb . toString () Ċ } Ċ Ċ fun ĠString . to P ill ar Domain Limit State List (): ĠList < P ill ar Domain Point > Ġ{ ĊĠĠĠ Ġval Ġpoint List Ġ= Ġsplit (" Ġ") ĊĠĠĠ Ġreturn Ġpoint List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . isEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġit . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( values . size Ġ== Ġ 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP ill ar Domain Point ( values [ 0 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 1 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 2 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 3 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 4 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 5 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 6 ]. toInt Or Zero ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠDouble . to Precision String () Ġ: ĠString Ċ { ĊĠĠĠ Ġreturn Ġ"% . 6 f ". format ( this ) Ċ } Ċ Ċ fun ĠList < P ill ar Domain Point >. to Par s able P ill ar Limit State String (): ĠString Ġ{ ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . append ( it . n . toString ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . m . toString ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . sd . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . fh . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . ty . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . label ) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . color . toString ()) ĊĠĠĠĠĠĠĠ Ġsb . append (" Ġ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsb . toString () Ċ } Ċ Ċ fun ĠString . to Spectrum DTO List (): ĠList < Spectrum DTO > Ġ{ ĊĠĠĠ Ġval Ġpoint List Ġ= Ġsplit (" Ġ") ĊĠĠĠ Ġreturn Ġpoint List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . isEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġit . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( values . size Ġ== Ġ 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpect rum DTO ( values [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 1 ]. toInt Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 2 ]. toInt Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 3 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 4 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 5 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 6 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 7 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 8 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 9 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 1 0 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 1 1 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 1 2 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 1 3 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 1 4 ]. toDouble Or Zero (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ 1 5 ]. to Spectrum Point List ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠList < Spectrum DTO >. to Par s able Spectrum DTO String (): ĠString Ġ{ ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . append ( it . name ) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . year . toString ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . color . toString ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . ag . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . f 0 . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . tc Star . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . ss . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . cc . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . st . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . q . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . s . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . ni . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . tb . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . tc . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . td . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (",") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . point List . to Spectrum Point String ()) ĊĠĠĠĠĠĠĠ Ġsb . append (" Ġ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsb . toString () Ċ } Ċ Ċ fun ĠString . to Spectrum Point List (): ĠList < Spectrum Point > Ġ{ ĊĠĠĠ Ġval Ġpoint List Ġ= Ġsplit ("& ") ĊĠĠĠ Ġreturn Ġpoint List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . isEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġit . split ("- ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpect rum Point ( pair [ 0 ]. toDouble (), Ġpair [ 1 ]. toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠList < Spectrum Point >. to Spectrum Point String (): ĠString Ġ{ ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . append ( it . x . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append ("- ") ĊĠĠĠĠĠĠĠ Ġsb . append ( it . y . to Precision String ()) ĊĠĠĠĠĠĠĠ Ġsb . append ("& ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsb . toString () Ċ } Ċ Ċ fun ĠList < Plant Point >. indexOf Next ( point : ĠPl ant Point ): ĠInt Ġ{ ĊĠĠĠ Ġreturn ĠindexOf ( point ) Ġ+ Ġ 1 Ċ } Ċ Ċ fun ĠPl ant Point . distance From ( other : ĠPl ant Point ): ĠDouble Ġ{ ĊĠĠĠ Ġreturn ĠMath . sqrt (( Math . pow (( x Ġ- Ġother . x ), Ġ 2 . 0 )) Ġ+ Ġ( Math . pow (( y Ġ- Ġother . y ), Ġ 2 . 0 ))) Ċ } Ċ Ċ fun ĠSpect rum Point . distance From ( other : ĠSpect rum Point ): ĠDouble Ġ{ ĊĠĠĠ Ġreturn ĠMath . sqrt (( Math . pow (( x Ġ- Ġother . x ), Ġ 2 . 0 )) Ġ+ Ġ( Math . pow (( y Ġ- Ġother . y ), Ġ 2 . 0 ))) Ċ } Ċ Ċ fun ĠSpect rum Point . vertical Middle Point ( other Ġ: ĠSpect rum Point ) Ġ: ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġ( y Ġ+ Ġother . y ) Ġ/ Ġ 2 Ċ } Ċ Ċ class ĠMath U ti Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġperiod Data Interpolation ( p 1 : ĠDouble , Ġp 2 : ĠDouble , Ġtr 1 : ĠInt , Ġtr 2 : ĠInt , Ġtr : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= ĠMath . log ( p 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= ĠMath . log (( p 2 Ġ/ Ġp 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthird Ġ= ĠMath . log (( tr . toDouble () Ġ/ Ġtr 1 . toDouble ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfourth Ġ= ĠMath . log (( tr 2 . toDouble () Ġ/ Ġtr 1 . toDouble ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl np Ġ= Ġfirst Ġ+ Ġ( second Ġ* Ġthird Ġ* Ġ( 1 Ġ/ Ġfourth )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMath . pow ( Math . E , Ġl np ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ