(cherry picked from commit 407b519fb14f79f19ebc4fbdf08204336a7acf77) (cherry picked from commit f3a4cbcc60572c73e0d15580bae42a36c92fe247) (cherry picked from commit 96cf681b5d9aca71548390cb258f8d0ca2131082)
(cherry picked from commit 407b519fb14f79f19ebc4fbdf08204336a7acf77) (cherry picked from commit f3a4cbcc60572c73e0d15580bae42a36c92fe247) (cherry picked from commit 96cf681b5d9aca71548390cb258f8d0ca2131082)