(cherry picked from commit ef9e536a7137d209985d25a4769712c2db2c52bf) (cherry picked from commit 4bb056544341726dd051353f1cc8430b801bf391) (cherry picked from commit 475b50b44cebf5e5b4622e4092f4a447569b1b2b)
(cherry picked from commit ef9e536a7137d209985d25a4769712c2db2c52bf) (cherry picked from commit 4bb056544341726dd051353f1cc8430b801bf391) (cherry picked from commit 475b50b44cebf5e5b4622e4092f4a447569b1b2b)