Based on 3c81f60041 (diff-7e5179d048c3dfaf75b444b7277fc840)
(cherry picked from commit ee8a53188c77d60b8105d1e6dcaedf35c2260ec8)
Based on 3c81f60041 (diff-7e5179d048c3dfaf75b444b7277fc840)
(cherry picked from commit ee8a53188c77d60b8105d1e6dcaedf35c2260ec8)