package Ġno . nav . hel se . risk Ċ Ċ import Ġkotlinx . serialization . Deserialization Strategy Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . Serialization Exception Ċ import Ġkotlinx . serialization . json .* Ċ import Ġno . nav . hel se . crypto . J WK Set Holder Ċ import Ġno . nav . hel se . crypto . decrypt From J WE Ċ import Ġno . nav . hel se . privacy . IM ask er Ċ import Ġno . nav . hel se . privacy . Id Mask er Ċ Ċ private Ġval Ġjson Flex ible Ġ= ĠJson Risk Ċ Ċ enum Ġclass ĠMel ding stype Ġ{ ĊĠĠĠ Ġopp sl ags result at , ĊĠĠĠ ĠR isk Need , ĊĠĠĠ Ġv ur der ing Ċ } Ċ Ċ const Ġval Ġved tak sp eri ode Id Key Ġ= Ġ" ved tak sp eri ode Id " Ċ const Ġval Ġtype Key Ġ= Ġ" type " Ċ const Ġval Ġinf otype Key Ġ= Ġ" inf otype " Ċ const Ġval Ġiter as jon Key Ġ= Ġ" iter as jon " Ċ const Ġval Ġdata Key Ġ= Ġ" data " Ċ Ċ @ Serializable Ċ data Ġclass ĠR isk Need ( ĊĠĠĠ Ġval Ġved tak sp eri ode Id : ĠString , ĊĠĠĠ Ġval Ġorgan is as j ons nummer : ĠString , ĊĠĠĠ Ġval Ġfn r : ĠString , ĊĠĠĠ Ġval Ġbeh ov Opp rett et : ĠString , ĊĠĠĠ Ġval Ġiter as jon : ĠInt , ĊĠĠĠ Ġval Ġper i ode type : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġoriginal Be h ov : ĠJsonObject ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġtype : ĠString Ġ= Ġ" Risk Need ", ĊĠĠĠ Ġval Ġis Retry : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġretry Count : ĠInt ? Ġ= Ġnull Ċ ) Ċ Ċ class ĠO pp sl ag type < T >( val Ġinf otype : ĠString , Ġval Ġserializer : ĠDeserial ization Strategy < T >) Ċ Ċ fun ĠJsonObject . til Risk Need (): ĠR isk Need Ġ= ĊĠĠĠ Ġjson Flex ible . decode FromJson Element ( Risk Need . serializer (), Ġthis ) Ċ Ċ fun ĠList < JsonObject >. fin n Risk Need (): ĠR isk Need ? Ġ= ĊĠĠĠ Ġthis . find Ġ{ Ġit [ type Key ]?. json Primitive ?. content Ġ== ĠMel ding stype . Risk Need . name Ġ} ?. til Risk Need () Ċ Ċ fun ĠList < JsonObject >. fin n Opp sl ags result at ( inf otype : ĠString ): ĠJson Element ? Ġ{ ĊĠĠĠ Ġval Ġk andid at Ġ= Ġthis . find Ġ{ ĊĠĠĠĠĠĠĠ Ġit [ type Key ]?. json Primitive ?. content OrNull Ġ== ĠMel ding stype . op ps l ags result at . name Ġ&& Ġit [ inf otype Key ]?. json Primitive ?. content OrNull Ġ== Ġinf otype ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( k andid at Ġ== Ġnull ) Ġnull Ġelse Ġk andid at . jsonObject [ data Key ] Ċ } Ċ Ċ private Ġval Ġsecure Log Ġ= ĠSan ity . get Secure Logger () Ċ private Ġval Ġpretty Json Ġ= ĠJson ( from Ġ= ĠJson Risk ) Ġ{ ĊĠĠĠ Ġpretty Print Ġ= Ġtrue Ċ } Ċ Ċ private Ġfun Ġ< T > ĠO pp sl ag type < T >. decode ( json : ĠJson Element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog On Deserialization Error : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Mask er : ĠI Mask er Ġ= ĠId Mask er ()) Ġ: ĠT Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġjson Flex ible . decode FromJson Element ( this . serializer , Ġjson ) ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠSerialization Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( log On Deserialization Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecure Log . error (" Serialization Exception : Ġ${ ex . message }: Ġ{}", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpretty Json . encode ToString ( Json Element . serializer (), Ġlog Mask er . mask ( json ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow Ġex ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T > List < JsonObject >. fin n Opp sl ags result at ( op ps lag stype : ĠO pp sl ag type < T >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog On Deserialization Error : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Mask er : ĠI Mask er Ġ= ĠId Mask er ()): ĠT ? Ġ= ĊĠĠĠ Ġthis . fin n Opp sl ags result at ( op ps lag stype . inf otype )?. let Ġ{ Ġopp sl ag stype . decode ( it , Ġlog On Deserialization Error , Ġlog Mask er ) Ġ} Ċ Ċ fun Ġ< T > List < JsonObject >. fin n Pa ak rev d Opp sl ags result at ( op ps lag stype : ĠO pp sl ag type < T >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog On Deserialization Error : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Mask er : ĠI Mask er Ġ= ĠId Mask er ()): ĠT Ġ= ĊĠĠĠ Ġthis . fin n Opp sl ags result at ( op ps lag stype . inf otype )?. let Ġ{ Ġopp sl ag stype . decode ( it , Ġlog On Deserialization Error , Ġlog Mask er ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: error (" M ang ler Ġopp sl ags result at Ġmed Ġinf otype =${ op ps lag stype . inf otype }") ĊĊ Ċ fun ĠList < JsonObject >. fin n Un ik V ed tak sp eri ode Id () Ġ: ĠString Ġ= ĊĠĠĠ Ġthis . let Ġ{ Ġme ld inger Ġ-> ĊĠĠĠĠĠĠĠ Ġme ld inger . first ()[ ved tak sp eri ode Id Key ] !!. json Primitive . content . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġme ld inger . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn este Ġ= Ġit [ ved tak sp eri ode Id Key ] !!. json Primitive . content ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nest e Ġ!= Ġthis ) Ġthrow ĠIllegalArgumentException (" ul ik Ġid : Ġ$ nest e Ġ!= Ġ$ this ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ @ Serializable Ċ data Ġclass ĠS je kk result at ( ĊĠĠĠ Ġval Ġid : ĠString , ĊĠĠĠ Ġval Ġbe gr un n else : ĠString , ĊĠĠĠ Ġval Ġvari abler : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġscore : ĠInt , ĊĠĠĠ Ġval Ġv ek t : ĠInt , ĊĠĠĠ Ġval Ġk re ver Man ue ll Be handling : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġval Ġk ategor ier : ĠList < String > Ġ= Ġempty List () Ċ ) Ċ Ċ @ Serializable Ċ data Ġclass ĠV ur der ings meld ing ( ĊĠĠĠ Ġval Ġtype : ĠString Ġ= ĠMel ding stype . v ur der ing . name , ĊĠĠĠ Ġval Ġinf otype : ĠString , ĊĠĠĠ Ġval Ġved tak sp eri ode Id : ĠString , ĊĠĠĠ Ġ@ Deprecated (" B ru k Ġs je kk result ater Ġi Ġste det ") Ġval Ġscore : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Deprecated (" B ru k Ġs je kk result ater Ġi Ġste det ") Ġval Ġv ek t : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Deprecated (" B ru k Ġs je kk result ater Ġi Ġste det ") Ġval Ġbe gr unnel ser : ĠList < String >? Ġ= Ġnull , Ġ// ĠNB : Ġv il Ġb li Ġdeprecated Ġ( B ru k Ġs je kk result ater Ġi Ġste det ) ĊĠĠĠ Ġ@ Deprecated (" B ru k Ġs je kk result ater Ġi Ġste det ") Ġval Ġbe gr unnel ser S om Al ene K re ver Man ue ll Be handling : ĠList < String >? Ġ= Ġnull , Ġ Ġ// ĠNB : Ġv il Ġb li Ġdeprecated Ġ( B ru k Ġs je kk result ater Ġi Ġste det ) ĊĠĠĠ Ġval Ġs je kk result ater : ĠList < S je kk result at >, ĊĠĠĠ Ġ@ Deprecated (" B ru k Ġs je kk result ater Ġi Ġste det ") Ġval Ġpass erte S jek ker : ĠList < String >? Ġ= Ġnull , Ġ// ĠNB : Ġv il Ġb li Ġdeprecated Ġ( B ru k Ġs je kk result ater Ġi Ġste det ) ĊĠĠĠ Ġval Ġmetadata : ĠMap < String , String >? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġbe gr unnel ser (): ĠList < String > Ġ= ĊĠĠĠĠĠĠĠ Ġs je kk result ater . filter Ġ{ Ġit . score Ġ> Ġ 0 Ġ}. map Ġ{ Ġit . be gr un n else Ġ} ĊĠĠĠ Ġfun Ġbe gr unnel ser S om Al ene K re ver Man ue ll Be handling (): ĠList < String > Ġ= ĊĠĠĠĠĠĠĠ Ġs je kk result ater . filter Ġ{ Ġit . k re ver Man ue ll Be handling Ġ}. map Ġ{ Ġit . be gr un n else Ġ} ĊĠĠĠ Ġfun Ġpass erte S jek ker (): ĠList < String > Ġ= ĊĠĠĠĠĠĠĠ Ġs je kk result ater . filter Ġ{ Ġit . score Ġ== Ġ 0 Ġ&& Ġit . ve kt Ġ!= Ġ 0 Ġ}. map Ġ{ Ġit . be gr un n else Ġ} Ċ Ċ } Ċ Ċ fun ĠJsonObject . til V ur der ings meld ing (): ĠV ur der ings meld ing Ġ= ĊĠĠĠ Ġjson Flex ible . decode FromJson Element ( V ur der ings meld ing . serializer (), Ġthis ) ĊĊ Ċ fun ĠJsonObject . decrypt If Encrypted ( de cryption JW KS : ĠJ WK Set Holder ?): ĠJsonObject Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( de cryption JW KS Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġthis . containsKey ( data Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġthis [ data Key ]?. json Primitive ?. content OrNull Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġthis [ data Key ] !!. json Primitive . content . startsWith (" ey ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecrypted Ġ= ĠJson Element . decrypt From J WE ( this [ data Key ] !!. json Primitive . content , Ġde cryption JW KS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJsonObject ( this . to Mutable Map (). also Ġ{ Ġnew Content Ġ-> Ġnew Content [ data Key ] Ġ= Ġdecrypted Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( exception Because Data Element IsNot A String And Th us Not J WE : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} Ċ }