package Ġcom . son onio . book maker . telegram . view Ċ Ċ object Ġmessage Ġ{ ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( init : ĠPlain . () Ġ-> ĠUnit ): ĠPlain Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠPlain () ĊĠĠĠĠĠĠĠ Ġcontext . init () ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠMult iline Ġ{ ĊĠĠĠ Ġfun Ġnewline ( count : ĠInt Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ! is ĠForm att ed ) Ġreturn ĊĠĠĠĠĠĠĠ Ġthis . text Ġ+= Ġ"\ n ". repeat ( count ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ abstract Ġclass ĠForm att ed ( private Ġval Ġsur round By : ĠChar ?, Ġprivate Ġval Ġcount : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠ Ġvar Ġtext Ġ= Ġ"" ĊĠĠĠ Ġvar Ġdo Escape Ġ= Ġtrue ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġsymbols To Escape (): ĠArray < Char > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ('_ ', Ġ'*', Ġ'[ ', Ġ' ]', Ġ' (', Ġ' )', Ġ'~ ', Ġ'` ', Ġ'>', Ġ'#', Ġ'+', Ġ'-', Ġ'=', Ġ' |', Ġ'{ ', Ġ' }', Ġ'.', Ġ' !') ĊĊĠĠĠ Ġprivate Ġval Ġborder : ĠString Ġget () Ġ= Ġsur round By ?. toString ()?. repeat ( count ) Ġ?: Ġ"" ĊĊĠĠĠ Ġprivate Ġval Ġescaped Payload : ĠString Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! do Escape ) Ġreturn Ġtext ĊĊĠĠĠĠĠĠĠ Ġval Ġneed To Escape Ġ= Ġsymbols To Escape () ĊĠĠĠĠĠĠĠ Ġval Ġregex Escape Ġ= ĠarrayOf ('.', Ġ'*', Ġ'+', Ġ' ?', Ġ'^ ', Ġ'$ ', Ġ' |', Ġ'[ ', Ġ' ]', Ġ' (', Ġ' )', Ġ'{ ', Ġ' }') ĊĠĠĠĠĠĠĠ Ġvar Ġtmp Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġfor Ġ( char Ġin Ġneed To Escape ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprepared Ġ= Ġif Ġ( regex Escape . contains ( char )) Ġ"\\ $ char " Ġelse Ġ"$ char " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġescape Matches Ġ= Ġprepared . to Regex (). findAll ( tmp ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġmatch ) Ġin Ġescape Matches . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchar Index Ġ= Ġmatch . range . last Ġ+ Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġtmp . substring ( 0 Ġuntil Ġchar Index ) Ġ+ Ġ"\ \" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp . substring ( char Index Ġuntil Ġtmp . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtmp ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ"$ border ${ escaped Payload }$ border " Ċ } Ċ Ċ abstract Ġclass ĠCommon Formatted ( sur round By : ĠChar ?, Ġcount : ĠInt Ġ= Ġ 0 ) Ġ: ĠForm att ed ( sur round By , Ġcount ) Ġ{ ĊĊĠĠĠ Ġfun Ġbold ( init : ĠB old . () Ġ-> ĠUnit ) Ġ= Ġproceed ( Bold (), Ġinit ) ĊĠĠĠ Ġfun Ġitalic ( init : ĠIt alic . () Ġ-> ĠUnit ) Ġ= Ġproceed ( Italic (), Ġinit ) ĊĠĠĠ Ġfun Ġstrike ( init : ĠStri ke . () Ġ-> ĠUnit ) Ġ= Ġproceed ( Stri ke (), Ġinit ) ĊĠĠĠ Ġfun Ġplain ( init : ĠPlain . () Ġ-> ĠUnit ) Ġ= Ġproceed ( Plain (), Ġinit ) ĊĊĠĠĠ Ġval Ġdot : ĠUnit Ġget () Ġ= Ġplain Ġ{ Ġtext Ġ= Ġ"." Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny ?> Ġrequired ( exists : ĠT , Ġinit : ĠCommon Formatted . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( exists Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġinit ( this ) ĊĠĠĠĠĠĠĠ Ġdo Escape Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny ?> Ġrequired Null ( exists : ĠT , Ġinit : ĠCommon Formatted . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( exists Ġ!= Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġinit ( this ) ĊĠĠĠĠĠĠĠ Ġdo Escape Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠBoolean ?> Ġrequired True ( cond id ion : ĠT , Ġinit : ĠCommon Formatted . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cond id ion Ġ!= Ġtrue ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġinit ( this ) ĊĠĠĠĠĠĠĠ Ġdo Escape Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠBoolean ?> Ġrequired False ( condition : ĠT , Ġinit : ĠCommon Formatted . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( condition Ġ!= Ġfalse ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġinit ( this ) ĊĠĠĠĠĠĠĠ Ġdo Escape Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġimport ( create : Ġ() Ġ-> ĠPlain ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimported Ġ= Ġcreate () ĊĠĠĠĠĠĠĠ Ġdo Escape Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtext Ġ+= Ġimported ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T Ġ: ĠForm att ed > Ġproceed ( tag : ĠT , Ġinit : ĠT . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtag . init () ĊĠĠĠĠĠĠĠ Ġdo Escape Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtext Ġ+= Ġtag ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠPlain Ġ: ĠCommon Formatted ( null ), ĠMult iline Ċ class ĠB old Ġ: ĠCommon Formatted ('* ', Ġ 1 ), ĠMult iline Ċ class ĠIt alic : ĠCommon Formatted ('_ ', Ġ 1 ), ĠMult iline Ċ class ĠStri ke : ĠCommon Formatted (' ~ ', Ġ 1 ), ĠMult iline Ċ