substitute.js revision cfe4b8ebf8befa9973d2acb157642cb1eef34df0