package Ġxyz . qw ew qa . re live . simulator . client Ċ Ċ import Ġxyz . qw ew qa . re live . simulator . common . Simulation Margin Result Type Ċ import Ġxyz . qw ew qa . re live . simulator . common . Simulation Result Type Ċ import Ġxyz . qw ew qa . re live . simulator . common . Simulation Result Value Ċ Ċ val Ġsimulation Result Value Comparator Ġ= ĠComparator < Simulation Result Value > Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠ Ġsequence Ġ{ ĊĠĠĠĠĠĠĠ Ġa . tags . zip ( b . tags ). forEach Ġ{ Ġ( a Tags , Ġb Tags ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( a Tags . compareTo ( b Tags )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġyield (- a . tags . size . compareTo ( b . tags . size )) ĊĠĠĠ Ġ}. first OrNull Ġ{ Ġit Ġ!= Ġ 0 Ġ} Ġ?: Ġsimulation Result Type Comparator . compare ( a . result , Ġb . result ) Ċ } Ċ Ċ val Ġsimulation Result Type Comparator Ġ= ĠComparator < Simulation Result Type > Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġa Ġis ĠSimulation Result Type . V ictory Ġ&& Ġb Ġis ĠSimulation Result Type . V ictory Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompare Values By ( a , Ġb , Ġ{ Ġit . turn Ġ}, Ġ{ Ġit . tile Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġa Ġis ĠSimulation Result Type . W ipe Ġ&& Ġb Ġis ĠSimulation Result Type . W ipe Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompare Values By ( a , Ġb , Ġ{ Ġit . turn Ġ}, Ġ{ Ġit . tile Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġa . order . compareTo ( b . order ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ val ĠSimulation Result Value . total Tags ĊĠĠĠ Ġget () Ġ= Ġtags Ġ+ Ġresult . run Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSimulation Result Type . W ipe Ġ-> ĠlistOf (" W ipe ", Ġ" t $ turn .$ tile ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSimulation Result Type . V ictory Ġ-> ĠlistOf (" V ictory ", Ġ" t $ turn .$ tile ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimulation Result Type . End Ġ-> ĠlistOf (" End ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimulation Result Type . Excluded Ġ-> ĠlistOf (" Excluded ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimulation Result Type . Error Ġ-> ĠlistOf (" Error ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ val ĠSimulation Result Type . displayName ĊĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSimulation Result Type . W ipe Ġ-> Ġ" W ipe Ġ( t $ turn .$ tile )" ĊĠĠĠĠĠĠĠ Ġis ĠSimulation Result Type . V ictory Ġ-> Ġ" V ictory Ġ( t $ turn .$ tile )" ĊĠĠĠĠĠĠĠ ĠSimulation Result Type . End Ġ-> Ġ" End " ĊĠĠĠĠĠĠĠ ĠSimulation Result Type . Excluded Ġ-> Ġ" Excluded " ĊĠĠĠĠĠĠĠ ĠSimulation Result Type . Error Ġ-> Ġ" Error " ĊĠĠĠ Ġ} Ċ Ċ val ĠSimulation Result Type . order ĊĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSimulation Result Type . W ipe Ġ-> Ġ 2 ĊĠĠĠĠĠĠĠ Ġis ĠSimulation Result Type . V ictory Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ ĠSimulation Result Type . End Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠ ĠSimulation Result Type . Excluded Ġ-> Ġ 4 ĊĠĠĠĠĠĠĠ ĠSimulation Result Type . Error Ġ-> Ġ 3 ĊĠĠĠ Ġ} Ċ Ċ val ĠSimulation Result Type . color ĊĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSimulation Result Type . W ipe Ġ-> Ġ" Dark M agenta " ĊĠĠĠĠĠĠĠ Ġis ĠSimulation Result Type . V ictory Ġ-> Ġ" Green " ĊĠĠĠĠĠĠĠ ĠSimulation Result Type . End Ġ-> Ġ" Fire Brick " ĊĠĠĠĠĠĠĠ ĠSimulation Result Type . Excluded Ġ-> Ġ" Gray " ĊĠĠĠĠĠĠĠ ĠSimulation Result Type . Error Ġ-> Ġ" Error " ĊĠĠĠ Ġ} Ċ Ċ val ĠSimulation Margin Result Type . color ĊĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSimulation Margin Result Type . W ipe Ġ-> Ġ" Dark M agenta " ĊĠĠĠĠĠĠĠ ĠSimulation Margin Result Type . End Ġ-> Ġ" Fire Brick " ĊĠĠĠ Ġ} Ċ