********* ****** ** ******* ******* *** *** ********* ****** ********* **** ** ************ ** ********* ****** ******* ****** *************** *** ***** ***** ********* ******** ** *********** ** *******
********* ***** ***** ******** **** *** **** ******** ******* *** ********* ************** *** ****** ** ************ ***** ***** **** ********** *** ****** ****** *** ******** *** ***********
********* * ****** ** ** ********** ***** ** ******* ****** **** ** ******* **** ** ***** *** ********** ***** *******