(cherry picked from commit d6e05c5ee26feefc17267b7c9db1e2a3dbdef117) (cherry picked from commit a94d23762e2cf4211fe84661eb67504c7072db49) (cherry picked from commit 68e07eb50b872ec8a78923df8f5f640f08a72aa2)
(cherry picked from commit d6e05c5ee26feefc17267b7c9db1e2a3dbdef117) (cherry picked from commit a94d23762e2cf4211fe84661eb67504c7072db49) (cherry picked from commit 68e07eb50b872ec8a78923df8f5f640f08a72aa2)