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