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