(cherry picked from commit 22ef5286bc8511ddee9594b7cecc598bf41a850b) (cherry picked from commit a5d12d9c1f2c0e6fcd918ee8e614dcaf203e77de) (cherry picked from commit e53f6fde465e5a1a97d8c4eebe7f7897b0875f1c)
(cherry picked from commit 22ef5286bc8511ddee9594b7cecc598bf41a850b) (cherry picked from commit a5d12d9c1f2c0e6fcd918ee8e614dcaf203e77de) (cherry picked from commit e53f6fde465e5a1a97d8c4eebe7f7897b0875f1c)