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