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