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