package Ġcom . pe ter . let ss wt ich . ext ĊĊ Ċ import Ġcom . pe ter . let ss wt ich . data . Chat Room Ċ import Ġcom . pe ter . let ss wt ich . data . Message Ċ import Ġcom . pe ter . let ss wt ich . data . Requirement Ċ import Ġcom . pe ter . let ss wt ich . data . User Ċ import Ġcom . pe ter . let ss wt ich . login . User Manager ĊĊ Ċ fun ĠList < User > ?. exclude User (): ĠList < User > Ġ{ ĊĠĠĠ Ġreturn Ġthis ?. filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . email Ġ!= ĠUser Manager . user . email ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠlistOf () Ċ } Ċ Ċ fun ĠList < Message > ?. exclude Friend ( friend Email : ĠString ): ĠList < Message > Ġ{ ĊĠĠĠ Ġreturn Ġthis ?. filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . sender Email Ġ!= Ġfriend Email ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠlistOf () Ċ } Ċ Ċ fun ĠList < User > ?. filter By Traits ( requirement : ĠRequirement ): ĠList < User > Ġ{ ĊĠĠĠ Ġreturn Ġthis ?. filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( requirement . gender Ġ== Ġ"" Ġ|| Ġrequirement . gender Ġ== Ġ" Both ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . city Ġ== Ġrequirement . city Ġ&& Ġit . fluent Language . contains ( requirement . language ) Ġ&& Ġit . city Ġ== ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequirement . city Ġ&& Ġit . email Ġ!= ĠUser Manager . user . email Ġ&& Ġit . age Ġ< Ġrequirement . age [ 1 ] Ġ&& Ġrequirement . age [ 0 ] Ġ< Ġit . age ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . city Ġ== Ġrequirement . city Ġ&& Ġit . gender Ġ== Ġrequirement . gender Ġ&& Ġit . fluent Language . contains ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequirement . language ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . age Ġ< Ġrequirement . age [ 1 ] Ġ&& Ġrequirement . age [ 0 ] Ġ< Ġit . age Ġ&& Ġit . email Ġ!= ĠUser Manager . user . email ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠlistOf () Ċ } Ċ Ċ fun ĠList < Chat Room > ?. sortBy TimeStamp ( selected Time : ĠLong ): ĠList < Chat Room > Ġ{ ĊĊĠĠĠ Ġreturn Ġthis ?. filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Time Ġ<= Ġit . latest Message Time Ġ&& Ġit . latest Message Time Ġ< Ġselected Time Ġ+ Ġ 8 6 4 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠlistOf () Ċ Ċ } ĊĊ