package Ġclock v apor . telegram . reddit mark ov Ċ Ċ import Ġclock v apor . mark ov . Mark ov Chain Ċ import Ġclock v apor . telegram . whitespace Regex Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġnet . de an . j raw . models . Submission Ċ import Ġjava . io . File Ċ Ċ // ĠNeeds Ġto Ġremain Ġpublic Ġfor ĠJSON Ġwriting Ċ @ Suppress (" Member Visibility Can Be Private ") Ċ class ĠRed dit Post Mark ov Chain ( val Ġids : ĠMutable Set < String > Ġ= Ġmutable Set Of (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Data : ĠMutable Map < String , ĠMutable Map < String , ĠInt >> Ġ= Ġmutable Map Of (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Data : ĠMutable Map < String , ĠMutable Map < String , ĠInt >> Ġ= Ġmutable Map Of ()) ĊĠĠĠ Ġ: ĠMark ov Chain ( body Data ) Ġ{ ĊĊĠĠĠ Ġfun Ġadd ( post : ĠSubmission ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ids . add ( post . unique Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost . title ?. take If Ġ{ Ġit . isNotBlank () Ġ} ?. let Ġ{ Ġtitle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( title . split ( whitespace Regex ), Ġthis . title Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( post . is Self Post ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost . self Text ?. take If Ġ{ Ġit . isNotBlank () Ġ} ?. let Ġ{ Ġself Text Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( self Text . split ( whitespace Regex )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost . url ?. take If Ġ{ Ġit . isNotBlank () Ġ} ?. let Ġ{ Ġurl Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( listOf ( url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate Title (): ĠList < String > Ġ= ĊĠĠĠĠĠĠĠ Ġgenerate ( title Data ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġread ( path : ĠString ): ĠRed dit Post Mark ov Chain Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObjectMapper (). readValue < Red dit Post Mark ov Chain >( File ( path ), ĠRed dit Post Mark ov Chain :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ