package Ġcom . cur tis lb . ad vent of code . year 2 0 1 9 . day 2 4 . bugs Ċ Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠA Ġfixed - size Ġgrid Ġcontaining Ġbugs Ġthat Ġmay Ġdie Ġoff Ġor Ġinf est Ġother Ġspaces Ġover Ġtime . Ċ Ġ* Ċ Ġ* Ġ@ param Ġb iod iversity ĠA Ġnumber Ġthat Ġuniquely Ġidentifies Ġthe Ġpositions Ġof Ġall Ġbugs Ġin Ġthe Ġgrid . Ċ Ġ*/ Ċ @ Jvm Inline Ċ value Ġclass ĠBug Grid ( val Ġb iod iversity : ĠInt ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġgrid Ġthat Ġresults Ġfrom Ġwaiting Ġone Ġminute Ġfor Ġbugs Ġin Ġthe Ġcurrent Ġgrid Ġto Ġdie Ġoff ĊĠĠĠĠ Ġ* Ġand / or Ġinf est Ġempty Ġspaces . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġnext Ġgrid Ġis Ġdetermined Ġby Ġapplying Ġthe Ġfollowing Ġrules Ġto Ġeach Ġspace Ġsimultaneously : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ- ĠA Ġbug Ġdies Ġ( be coming Ġan Ġempty Ġspace ) Ġunless Ġthere Ġis Ġexactly Ġone Ġbug Ġadjacent Ġto Ġit . ĊĠĠĠĠ Ġ* Ġ- ĠAn Ġempty Ġspace Ġbecomes Ġinf ested Ġwith Ġa Ġbug Ġif Ġexactly Ġone Ġor Ġtwo Ġbugs Ġare Ġadjacent Ġto Ġit . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġ[ upper Level ] Ġis Ġnon - null , Ġthis Ġgrid Ġis Ġtreated Ġas Ġreplacing Ġits Ġcenter Ġspace , Ġwith Ġbugs Ġon ĊĠĠĠĠ Ġ* Ġthe Ġex terior Ġof Ġthis Ġgrid Ġconsidered Ġadjacent Ġto Ġspaces Ġin Ġ[ upper Level ] Ġand Ġvice Ġvers a . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġ[ lower Level ] Ġis Ġnon - null , Ġit Ġis Ġtreated Ġas Ġreplacing Ġthis Ġgrid 's Ġcenter Ġspace , Ġwith Ġbugs ĊĠĠĠĠ Ġ* Ġon Ġthe Ġex terior Ġof Ġ[ lower Level ] Ġconsidered Ġadjacent Ġto Ġspaces Ġin Ġthis Ġgrid Ġand Ġvice Ġvers a . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnext ( upper Level : ĠBug Grid ? Ġ= Ġnull , Ġlower Level : ĠBug Grid ? Ġ= Ġnull ): ĠBug Grid Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnew B iod iversity Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( space Offset Ġin Ġ 0 Ġuntil ĠGR ID _ SP ACES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġupdate Ġthe Ġcenter Ġspace Ġif Ġlower Level Ġis Ġnon - null . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( space Offset Ġ== ĠOFFSET _ CENTER Ġ&& Ġlower Level Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠApply Ġthe Ġupdate Ġrules Ġto Ġeach Ġspace . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspace Flag Ġ= Ġ 1 Ġshl Ġspace Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbug Flag Ġ= Ġb iod iversity Ġand Ġspace Flag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadjacent Bug Count Ġ= Ġcount Adjacent Bugs ( space Offset , Ġupper Level , Ġlower Level ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew B iod iversity Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbug Flag Ġ!= Ġ 0 Ġ&& Ġadjacent Bug Count Ġ!= Ġ 1 Ġ-> Ġnew B iod iversity Ġand Ġspace Flag . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbug Flag Ġ== Ġ 0 Ġ&& Ġadjacent Bug Count Ġin Ġ 1 .. 2 Ġ-> Ġnew B iod iversity Ġor Ġspace Flag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnew B iod iversity Ġor Ġbug Flag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠBug Grid ( new B iod iversity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġnumber Ġof Ġbugs Ġin Ġthe Ġgrid Ġthat Ġocc upy Ġspaces Ġmatching Ġ[ space Mask ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġno Ġ[ space Mask ] Ġis Ġprovided , Ġreturns Ġthe Ġcount Ġof Ġall Ġbugs Ġin Ġthe Ġgrid . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcount Bugs ( space Mask : ĠInt Ġ= Ġ 0 . inv ()): ĠInt Ġ= ĠInteger . bit Count ( b iod iversity Ġand Ġspace Mask ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġnumber Ġof Ġbugs Ġadjacent Ġto Ġthe Ġspace Ġat Ġ[ space Offset ] Ġin Ġthe Ġgrid . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWhen Ġnon - null , Ġ[ upper Level ] Ġand Ġ[ lower Level ] Ġrepresent Ġgrid Ġlevels Ġabove Ġand Ġbelow Ġthe ĊĠĠĠĠ Ġ* Ġcurrent Ġgrid , Ġrespectively , Ġfor Ġthe Ġpurpose Ġof Ġdetermining Ġadjacent Ġspaces . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ next ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcount Adjacent Bugs ( ĊĠĠĠĠĠĠĠ Ġspace Offset : ĠInt , ĊĠĠĠĠĠĠĠ Ġupper Level : ĠBug Grid ?, ĊĠĠĠĠĠĠĠ Ġlower Level : ĠBug Grid ? ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠConvert Ġspace Offset Ġto Ġgrid Ġcoordinates . ĊĠĠĠĠĠĠĠ Ġval ĠrowIndex Ġ= Ġspace Offset Ġ/ ĠGR ID _ SIDE ĊĠĠĠĠĠĠĠ Ġval Ġcol Index Ġ= Ġspace Offset Ġ% ĠGR ID _ SIDE ĊĊĠĠĠĠĠĠĠ Ġ// ĠCount Ġadjacent Ġbugs Ġwithin Ġthe Ġcurrent Ġgrid . ĊĠĠĠĠĠĠĠ Ġif Ġ( rowIndex Ġ> Ġ 0 Ġ&& Ġis Bug At ( space Offset Ġ- ĠGR ID _ SIDE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( rowIndex Ġ< ĠGR ID _ SIDE Ġ- Ġ 1 Ġ&& Ġis Bug At ( space Offset Ġ+ ĠGR ID _ SIDE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( col Index Ġ> Ġ 0 Ġ&& Ġis Bug At ( space Offset Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( col Index Ġ< ĠGR ID _ SIDE Ġ- Ġ 1 Ġ&& Ġis Bug At ( space Offset Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCount Ġany Ġadjacent Ġbugs Ġfrom Ġthe Ġouter Ġgrid . ĊĠĠĠĠĠĠĠ Ġif Ġ( upper Level Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rowIndex Ġ== Ġ 0 Ġ&& Ġupper Level . is Bug At ( OFFSET _ TOP _ INTER IOR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rowIndex Ġ== ĠGR ID _ SIDE Ġ- Ġ 1 Ġ&& Ġupper Level . is Bug At ( OFFSET _ BOTTOM _ INTER IOR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( col Index Ġ== Ġ 0 Ġ&& Ġupper Level . is Bug At ( OFFSET _ LEFT _ INTER IOR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( col Index Ġ== ĠGR ID _ SIDE Ġ- Ġ 1 Ġ&& Ġupper Level . is Bug At ( OFFSET _ RIGHT _ INTER IOR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCount Ġany Ġadjacent Ġbugs Ġfrom Ġthe Ġinner Ġgrid . ĊĠĠĠĠĠĠĠ Ġif Ġ( lower Level Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( space Offset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOFFSET _ TOP _ INTER IOR Ġ-> Ġcount Ġ+= Ġlower Level . count Bugs ( MASK _ TOP _ EXT ER IOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOFFSET _ BOTTOM _ INTER IOR Ġ-> Ġcount Ġ+= Ġlower Level . count Bugs ( MASK _ BOTTOM _ EXT ER IOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOFFSET _ LEFT _ INTER IOR Ġ-> Ġcount Ġ+= Ġlower Level . count Bugs ( MASK _ LEFT _ EXT ER IOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOFFSET _ RIGHT _ INTER IOR Ġ-> Ġcount Ġ+= Ġlower Level . count Bugs ( MASK _ RIGHT _ EXT ER IOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġ` true ` Ġif Ġthere Ġis Ġbug Ġat Ġ[ space Offset ] Ġin Ġthe Ġgrid , Ġor Ġ` false ` Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Bug At ( space Offset : ĠInt ): ĠBoolean Ġ= Ġb iod iversity Ġand Ġ( 1 Ġshl Ġspace Offset ) Ġ!= Ġ 0 ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠA Ġgrid Ġcontaining Ġno Ġbugs . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠEMPTY Ġ= ĠBug Grid ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġwidth Ġand Ġheight Ġof Ġa Ġgrid , Ġin Ġnumber Ġof Ġspaces . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGR ID _ SIDE Ġ= Ġ 5 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġtotal Ġnumber Ġof Ġspaces Ġin Ġa Ġgrid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGR ID _ SP ACES Ġ= ĠGR ID _ SIDE Ġ* ĠGR ID _ SIDE ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠA Ġbit Ġmask Ġfor Ġselecting Ġspaces Ġin Ġthe Ġtop Ġrow Ġof Ġthe Ġgrid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMASK _ TOP _ EXT ER IOR Ġ= Ġ( 1 Ġshl ĠGR ID _ SIDE ) Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠA Ġbit Ġmask Ġfor Ġselecting Ġspaces Ġin Ġthe Ġbottom Ġrow Ġof Ġthe Ġgrid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMASK _ BOTTOM _ EXT ER IOR Ġ= ĠMASK _ TOP _ EXT ER IOR Ġshl Ġ( GRID _ SP ACES Ġ- ĠGR ID _ SIDE ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠA Ġbit Ġmask Ġfor Ġselecting Ġspaces Ġin Ġthe Ġleft most Ġcolumn Ġof Ġthe Ġgrid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMASK _ LEFT _ EXT ER IOR Ġ= Ġ( 0 Ġuntil ĠGR ID _ SP ACES Ġstep ĠGR ID _ SIDE ). sum Of Ġ{ Ġ 1 Ġshl Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠA Ġbit Ġmask Ġfor Ġselecting Ġspaces Ġin Ġthe Ġright most Ġcolumn Ġof Ġthe Ġgrid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMASK _ RIGHT _ EXT ER IOR Ġ= ĠMASK _ LEFT _ EXT ER IOR Ġshl Ġ( GRID _ SIDE Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġoffset Ġfor Ġthe Ġcenter Ġgrid Ġspace . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠOFFSET _ CENTER Ġ= Ġ( GRID _ SIDE Ġ+ Ġ 1 ) Ġ* Ġ( GRID _ SIDE Ġ/ Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġoffset Ġfor Ġthe Ġgrid Ġspace Ġthat Ġis Ġadjacent Ġto Ġall Ġtop - row Ġspaces Ġof Ġa Ġlower Ġgrid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠOFFSET _ TOP _ INTER IOR Ġ= ĠGR ID _ SIDE Ġ* Ġ( GRID _ SIDE Ġ/ Ġ 2 Ġ- Ġ 1 ) Ġ+ Ġ( GRID _ SIDE Ġ/ Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġoffset Ġfor Ġthe Ġgrid Ġspace Ġthat Ġis Ġadjacent Ġto Ġall Ġbottom - row Ġspaces Ġof Ġa Ġlower Ġgrid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠOFFSET _ BOTTOM _ INTER IOR Ġ= ĠOFFSET _ TOP _ INTER IOR Ġ+ ĠGR ID _ SIDE Ġ* Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġoffset Ġfor Ġthe Ġgrid Ġspace Ġthat Ġis Ġadjacent Ġto Ġall Ġleft most Ġspaces Ġof Ġa Ġlower Ġgrid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠOFFSET _ LEFT _ INTER IOR Ġ= ĠGR ID _ SIDE Ġ* Ġ( GRID _ SIDE Ġ/ Ġ 2 ) Ġ+ Ġ( GRID _ SIDE Ġ/ Ġ 2 ) Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġoffset Ġfor Ġthe Ġgrid Ġspace Ġthat Ġis Ġadjacent Ġto Ġall Ġright most Ġspaces Ġof Ġa Ġlower Ġgrid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠOFFSET _ RIGHT _ INTER IOR Ġ= ĠOFFSET _ LEFT _ INTER IOR Ġ+ Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġa Ġgrid Ġmatching Ġthe Ġlayout Ġgiven Ġby Ġan Ġinput Ġ[ file ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠEach Ġline Ġof Ġ[ file ] Ġshould Ġcontain Ġa Ġrow Ġof Ġcharacters , Ġwith Ġ` '. '` Ġrepresenting Ġan Ġempty ĊĠĠĠĠĠĠĠĠ Ġ* Ġspace Ġand Ġ`' # '` Ġrepresenting Ġa Ġspace Ġthat Ġcontains Ġa Ġbug . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( file : ĠFile ): ĠBug Grid Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġb iod iversity Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġspace Flag Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . forEach Line Ġ{ Ġline Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline . forEach Ġ{ Ġchar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( char Ġ== Ġ'# ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb iod iversity Ġ= Ġb iod iversity Ġor Ġspace Flag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspace Flag Ġ= Ġspace Flag Ġshl Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBug Grid ( b iod iversity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ