package Ġal man akka . core . providers Ċ Ċ import Ġal man akka . core . ID ay Ċ Ċ class ĠMonth Indexer ( private Ġval Ġmin Day : ĠID ay , Ġprivate Ġval Ġmax Day : ĠID ay ) Ġ{ ĊĊĠĠĠ Ġval Ġsize : ĠInt Ġ= Ġcalculate Month Size () ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Month Size (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd Year Ġ= Ġmax Day . year Ġ- Ġmin Day . year ĊĠĠĠĠĠĠĠ Ġval Ġd Month Ġ= Ġmax Day . month Ġ- Ġmin Day . month ĊĊĠĠĠĠĠĠĠ Ġreturn Ġd Year Ġ* Ġ 1 2 Ġ+ Ġd Month Ġ+ Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconvert Month To Index ( year : ĠShort , Ġmonth : ĠByte ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( year Ġ< Ġmin Day . year Ġ|| Ġ( year Ġ== Ġmin Day . year Ġ&& Ġmonth Ġ< Ġmin Day . month )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( max Day . year Ġ< Ġyear Ġ|| Ġ( year Ġ== Ġmax Day . year Ġ&& Ġmax Day . month Ġ< Ġmonth )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ( year Ġ- Ġmin Day . year ) Ġ* Ġ 1 2 Ġ+ Ġmonth Ġ- Ġmin Day . month ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreturn Ġpair Ġis Ġyear Ġand Ġmonth ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconvert Index To Month ( index : ĠInt ): ĠPair < Short , ĠByte >? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ<= Ġindex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġsize Ġ= Ġindex ĊĠĠĠĠĠĠĠ Ġval Ġd Year Ġ= Ġsize Ġ/ Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġsize Ġ= Ġindex Ġ% Ġ 1 2 ĊĊĠĠĠĠĠĠĠ Ġvar Ġyear Ġ= Ġmin Day . year Ġ+ Ġd Year ĊĠĠĠĠĠĠĠ Ġvar Ġmonth Ġ= Ġmin Day . month Ġ+ Ġsize ĊĊĠĠĠĠĠĠĠ Ġif Ġ( 1 2 Ġ< Ġmonth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Ġ-= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyear Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( year . to Short (), Ġmonth . to Byte ()) ĊĠĠĠ Ġ} Ċ }