/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠNew ĠVector ĠLtd Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġim . vector . app . features . notifications Ċ Ċ import Ġandroid . app . Notification Ċ import Ġim . vector . app . test . f akes . Fake Context Ċ import Ġim . vector . app . test . f akes . Fake Notification Dis player Ċ import Ġim . vector . app . test . f akes . Fake Notification Factory Ċ import Ġio . mock k . mock k Ċ import Ġorg . junit . Test Ċ Ċ private Ġconst Ġval ĠMY _ USER _ ID Ġ= Ġ" my - user - id " Ċ private Ġconst Ġval ĠMY _ USER _ DISPLAY _ NAME Ġ= Ġ" display - name " Ċ private Ġconst Ġval ĠMY _ USER _ AV AT AR _ URL Ġ= Ġ" avatar - url " Ċ private Ġconst Ġval ĠAN _ EVENT _ ID Ġ= Ġ" event - id " Ċ private Ġconst Ġval ĠA _ ROOM _ ID Ġ= Ġ" room - id " Ċ private Ġconst Ġval ĠUSE _ COMPLETE _ NOTIFICATION _ FORMAT Ġ= Ġtrue Ċ Ċ private Ġval ĠAN _ EVENT _ LIST Ġ= ĠlistOf < Processed Event < Not ifiable Event >>() Ċ private Ġval ĠA _ PROC ES SED _ EVENTS Ġ= ĠGroup ed Notification Events ( empty Map (), Ġempty List (), Ġempty List ()) Ċ private Ġval ĠA _ SUM MARY _ NOTIFICATION Ġ= ĠSummary Notification . Update ( mock k ()) Ċ private Ġval ĠA _ REMOVE _ SUM MARY _ NOTIFICATION Ġ= ĠSummary Notification . Removed Ċ private Ġval ĠA _ NOTIFICATION Ġ= Ġmock k < Notification >() Ċ private Ġval ĠMESSAGE _ META Ġ= ĠRoom Notification . Message . Meta ( ĊĠĠĠĠĠĠĠ Ġsummary Line Ġ= Ġ" ignored ", Ġmessage Count Ġ= Ġ 1 , Ġlatest Timestamp Ġ= Ġ- 1 , Ġroom Id Ġ= ĠA _ ROOM _ ID , Ġshould B ing Ġ= Ġfalse Ċ ) Ċ private Ġval ĠONE _ SHOT _ META Ġ= ĠOne Shot Notification . Append . Meta ( key Ġ= Ġ" ignored ", Ġsummary Line Ġ= Ġ" ignored ", Ġis No isy Ġ= Ġfalse , Ġtimestamp Ġ= Ġ- 1 ) Ċ Ċ class ĠNotification Renderer Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= ĠFake Context () ĊĠĠĠ Ġprivate Ġval Ġnotification Dis player Ġ= ĠFake Notification Dis player () ĊĠĠĠ Ġprivate Ġval Ġnotification Factory Ġ= ĠFake Notification Factory () ĊĊĠĠĠ Ġprivate Ġval Ġnotification Renderer Ġ= ĠNotification Renderer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Dis player Ġ= Ġnotification Dis player . instance , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Factory Ġ= Ġnotification Factory . instance , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context Ġ= Ġcontext . instance ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġno Ġnotifications Ġwhen Ġrendering Ġthen Ġcancel s Ġsummary Ġnotification `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven No Notifications () ĊĊĠĠĠĠĠĠĠ Ġrender Events As Notifications () ĊĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify Summary Cancelled () ĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify No Other Interactions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġlast Ġroom Ġmessage Ġgroup Ġnotification Ġis Ġremoved Ġwhen Ġrendering Ġthen Ġremove Ġthe Ġsummary Ġand Ġthen Ġremove Ġmessage Ġnotification `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Notifications ( room Notifications Ġ= ĠlistOf ( Room Notification . Removed ( A _ ROOM _ ID )), Ġsummary Notification Ġ= ĠA _ REMOVE _ SUM MARY _ NOTIFICATION ) ĊĊĠĠĠĠĠĠĠ Ġrender Events As Notifications () ĊĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify In Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Notification Message ( tag Ġ= Ġnull , ĠNotification Drawer Manager . SUM MARY _ NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Notification Message ( tag Ġ= ĠA _ ROOM _ ID , ĠNotification Drawer Manager . ROOM _ MESSAGES _ NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġa Ġroom Ġmessage Ġgroup Ġnotification Ġis Ġremoved Ġwhen Ġrendering Ġthen Ġremove Ġthe Ġmessage Ġnotification Ġand Ġupdate Ġsummary `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Notifications ( room Notifications Ġ= ĠlistOf ( Room Notification . Removed ( A _ ROOM _ ID ))) ĊĊĠĠĠĠĠĠĠ Ġrender Events As Notifications () ĊĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify In Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Notification Message ( tag Ġ= ĠA _ ROOM _ ID , ĠNotification Drawer Manager . ROOM _ MESSAGES _ NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification Message ( tag Ġ= Ġnull , ĠNotification Drawer Manager . SUM MARY _ NOTIFICATION _ ID , ĠA _ SUM MARY _ NOTIFICATION . notification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġa Ġroom Ġmessage Ġgroup Ġnotification Ġis Ġadded Ġwhen Ġrendering Ġthen Ġshow Ġthe Ġmessage Ġnotification Ġand Ġupdate Ġsummary `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Notifications ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Notifications Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoom Notification . Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA _ NOTIFICATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMESSAGE _ META ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrender Events As Notifications () ĊĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify In Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification Message ( tag Ġ= ĠA _ ROOM _ ID , ĠNotification Drawer Manager . ROOM _ MESSAGES _ NOTIFICATION _ ID , ĠA _ NOTIFICATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification Message ( tag Ġ= Ġnull , ĠNotification Drawer Manager . SUM MARY _ NOTIFICATION _ ID , ĠA _ SUM MARY _ NOTIFICATION . notification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġlast Ġsimple Ġnotification Ġis Ġremoved Ġwhen Ġrendering Ġthen Ġremove Ġthe Ġsummary Ġand Ġthen Ġremove Ġsimple Ġnotification `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Notifications ( simple Notifications Ġ= ĠlistOf ( One Shot Notification . Removed ( AN _ EVENT _ ID )), Ġsummary Notification Ġ= ĠA _ REMOVE _ SUM MARY _ NOTIFICATION ) ĊĊĠĠĠĠĠĠĠ Ġrender Events As Notifications () ĊĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify In Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Notification Message ( tag Ġ= Ġnull , ĠNotification Drawer Manager . SUM MARY _ NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Notification Message ( tag Ġ= ĠAN _ EVENT _ ID , ĠNotification Drawer Manager . ROOM _ EVENT _ NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġa Ġsimple Ġnotification Ġis Ġremoved Ġwhen Ġrendering Ġthen Ġremove Ġthe Ġsimple Ġnotification Ġand Ġupdate Ġsummary `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Notifications ( simple Notifications Ġ= ĠlistOf ( One Shot Notification . Removed ( AN _ EVENT _ ID ))) ĊĊĠĠĠĠĠĠĠ Ġrender Events As Notifications () ĊĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify In Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Notification Message ( tag Ġ= ĠAN _ EVENT _ ID , ĠNotification Drawer Manager . ROOM _ EVENT _ NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification Message ( tag Ġ= Ġnull , ĠNotification Drawer Manager . SUM MARY _ NOTIFICATION _ ID , ĠA _ SUM MARY _ NOTIFICATION . notification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġa Ġsimple Ġnotification Ġis Ġadded Ġwhen Ġrendering Ġthen Ġshow Ġthe Ġsimple Ġnotification Ġand Ġupdate Ġsummary `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Notifications ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Notifications Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOne Shot Notification . Append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA _ NOTIFICATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠONE _ SHOT _ META . copy ( key Ġ= ĠAN _ EVENT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrender Events As Notifications () ĊĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify In Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification Message ( tag Ġ= ĠAN _ EVENT _ ID , ĠNotification Drawer Manager . ROOM _ EVENT _ NOTIFICATION _ ID , ĠA _ NOTIFICATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification Message ( tag Ġ= Ġnull , ĠNotification Drawer Manager . SUM MARY _ NOTIFICATION _ ID , ĠA _ SUM MARY _ NOTIFICATION . notification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġlast Ġinv itation Ġnotification Ġis Ġremoved Ġwhen Ġrendering Ġthen Ġremove Ġthe Ġsummary Ġand Ġthen Ġremove Ġinv itation Ġnotification `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Notifications ( inv itation Notifications Ġ= ĠlistOf ( One Shot Notification . Removed ( A _ ROOM _ ID )), Ġsummary Notification Ġ= ĠA _ REMOVE _ SUM MARY _ NOTIFICATION ) ĊĊĠĠĠĠĠĠĠ Ġrender Events As Notifications () ĊĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify In Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Notification Message ( tag Ġ= Ġnull , ĠNotification Drawer Manager . SUM MARY _ NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Notification Message ( tag Ġ= ĠA _ ROOM _ ID , ĠNotification Drawer Manager . ROOM _ INV IT ATION _ NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġan Ġinv itation Ġnotification Ġis Ġremoved Ġwhen Ġrendering Ġthen Ġremove Ġthe Ġinv itation Ġnotification Ġand Ġupdate Ġsummary `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Notifications ( inv itation Notifications Ġ= ĠlistOf ( One Shot Notification . Removed ( A _ ROOM _ ID ))) ĊĊĠĠĠĠĠĠĠ Ġrender Events As Notifications () ĊĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify In Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Notification Message ( tag Ġ= ĠA _ ROOM _ ID , ĠNotification Drawer Manager . ROOM _ INV IT ATION _ NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification Message ( tag Ġ= Ġnull , ĠNotification Drawer Manager . SUM MARY _ NOTIFICATION _ ID , ĠA _ SUM MARY _ NOTIFICATION . notification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġan Ġinv itation Ġnotification Ġis Ġadded Ġwhen Ġrendering Ġthen Ġshow Ġthe Ġinv itation Ġnotification Ġand Ġupdate Ġsummary `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Notifications ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Notifications Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOne Shot Notification . Append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA _ NOTIFICATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠONE _ SHOT _ META . copy ( key Ġ= ĠA _ ROOM _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrender Events As Notifications () ĊĊĠĠĠĠĠĠĠ Ġnotification Dis player . verify In Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification Message ( tag Ġ= ĠA _ ROOM _ ID , ĠNotification Drawer Manager . ROOM _ EVENT _ NOTIFICATION _ ID , ĠA _ NOTIFICATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification Message ( tag Ġ= Ġnull , ĠNotification Drawer Manager . SUM MARY _ NOTIFICATION _ ID , ĠA _ SUM MARY _ NOTIFICATION . notification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Events As Notifications () Ġ{ ĊĠĠĠĠĠĠĠ Ġnotification Renderer . render ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy UserId Ġ= ĠMY _ USER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy User DisplayName Ġ= ĠMY _ USER _ DISPLAY _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy User Avatar Url Ġ= ĠMY _ USER _ AV AT AR _ URL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Complete Notification Format Ġ= ĠUSE _ COMPLETE _ NOTIFICATION _ FORMAT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents To Process Ġ= ĠAN _ EVENT _ LIST ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgiven No Notifications () Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Notifications ( emptyList (), Ġempty List (), Ġempty List (), ĠUSE _ COMPLETE _ NOTIFICATION _ FORMAT , ĠA _ REMOVE _ SUM MARY _ NOTIFICATION ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgiven Notifications ( room Notifications : ĠList < Room Notification > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinv itation Notifications : ĠList < One Shot Notification > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Notifications : ĠList < One Shot Notification > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Complete Notification Format : ĠBoolean Ġ= ĠUSE _ COMPLETE _ NOTIFICATION _ FORMAT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Notification : ĠSummary Notification Ġ= ĠA _ SUM MARY _ NOTIFICATION ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnotification Factory . given Notifications For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrouped Events Ġ= ĠA _ PROC ES SED _ EVENTS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy UserId Ġ= ĠMY _ USER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy User DisplayName Ġ= ĠMY _ USER _ DISPLAY _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy User Avatar Url Ġ= ĠMY _ USER _ AV AT AR _ URL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Complete Notification Format Ġ= Ġuse Complete Notification Format , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Notifications Ġ= Ġroom Notifications , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinv itation Notifications Ġ= Ġinv itation Notifications , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Notifications Ġ= Ġsimple Notifications , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Notification Ġ= Ġsummary Notification ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ