forked from Napstar-xda's touch recovery source