reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reportedreported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported reported