valакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакїкакїк€л€ллYлїкЉкїк‚какїкїкЉк‚к€лїкакїкYлллЉкYл€лGкїкЉкакїкакЉк€лїкакЉкакYлїктлЇлYл€лЉкYллак€лЉкЇллакакїклакЉкYл€лЉклїкYллїкактлтлїкїклYллїкїкЉкакакЉклаклїк‚какакакїкYлїкїк‚к‚какаклYлYллїкїклYлакакYлакYлл‚кїклїклїкакїкакакїкакїкYллїкакЉкакїкакллакїкїкакїклїклакакїкакакїкЉкїк€лїкакїк‚какїкллїкYлакЉкЉкакакїкїкЉкакЉк‚какакакакЉкЉкакакакллYллакЉкїкакакакаклакакїкаклYлYлЇл€лЉкїкак‚какїкїкYл€лїкїкЉкЉкакакYллїклїкїкакїкЉкїклаклакїкакллїкїклYлЉкллакїклїкакЉкЉклїкїкYлЉкакакЉкїклїклїк‚кїкЉк‚кїкллYлїкїкїкакїкакакYллллїкакYлїкакYлЉкакїкYлїкЉкакллакакYлїкЉклаклакакїктллїклYлЇлYлЉкYлЇлл€лYлYлYлYлYл мїкїкYлїкллїкл€лЉкYлл€ллл0млЉклYл м’мkм0мтлЉкл€лYлЭмтлЇлтлYл‚к‚кЉклЇлYллакGкЉкїкл0мkмтл0мЇлл€лЇл мємЭмkмтл€лЇлтлтлн}нЭмЭм0мЇл0мємЄнооёоzпоAооЪомп>рSпSпоЄнооЪоЁпzпzпSпоёоЁпzпЧрŒрЁп>рŒррzпzпЁпмпЪоhоAоVнЄнhооёорzпSпSпhоЪоSпмпЧрŒрŒрЧрррeрЧрwстБсwсPссPсБстaт‰т‰т‰т:т:тУтътLуеуеуЎуЎуLуsуЎуLу7ф7ф^ф…ф7фќу^ф^ф…фpхIхIх"хчф"х"хIхЋхЋх4цљхpхIхвх4ц4цНцфцНц[цвхљх–цНцmчFчфцmчч4цНцчmчічЈчЯчЯчфцЈчЈчmчЯчічЯчічічЈчmчЯчЯч1ш1шЯчЯчmчЈчічЯч’шXш1шічЈччFчЈчЯч’ш’ш1шічЈчЈчЈчmч1шічЯчічЈчччmчFчЈчmчFчFччmчmчЈчЈчЯчЈчЈчFчфцFчфцчFчFч4ц4цљхфцНцфцmч4цЋхљхљхpхљхЋхЋх4ц4ц4цвхpхpхЋхpхљхљхљхвхpхpхЋхpхpхвхвхpхpх"хчф…фРфчфIх"х"х…ф7ф7фќуеуеу7ф7ф7фsуsуsуLуsуЎуLууLуУт‰тaтaтът‰тУт‰тaтaт:тaтaтaтaтaт‰тaтaтaт:тaтaтaттист‰т:т:т‰тт‰ттисисwсисисисwсwсPсссPсБссPсPсссюрсюрЧрюрЧрPсPсБсLутсюрeр>р>рЁпzпSппSпёоёоёоhоЪоопнЄн}н}нVнVннЭм’м’мkм0м0м мтл0м мтлЇл€лYлYлYлYлЉкGк‚к кGк‚к кОйљйОй—й—й—й5йй5йййгиЌиЌиЌи…и…иЌиJиќзќзќзќзќз`з9з`ззжзжАжзжзжАжˆжˆжџеџеХеžеХеџеcееекдкдкд<еГдеГдQдГдQд*дяг*д*дягШгЁгfгfг?г?гfгfгfгfг?ггнвЖвгЖвЖвнвTвTв-вђбђбђбЫбЫб-вЫбЄбЄбiбЄбЄбЄбЄбраббраЙаЙаЙаЙаЙараWаіЯ0аіЯ0аіЯ0аЇЯmЯЇЯЇЯmЯmЯEЯ Я ЯМЮфЮМЮљЭ‚ЮфЮ‚Ю‚Ю[Ю3Ю3Ю3ЮвЭвЭљЭвЭвЭ—ЭpЭ—ЭpЭвЭ—ЭвЭвЭЭpЭIЭЭЭвЭ—ЭIЭ—ЭЭpЭpЭчЬРЬЭчЬчЬЭчЬРЬ…ЬРЬЭРЬ…Ь…Ь…Ь^Ь…Ь^Ь…ЬРЬ…Ь^Ь…ЬќЫќЫ^ЬќЫ…Ь…Ь^Ь…Ь7ЬšЫеЫеЫ7Ь7ЬеЫ^ЬќЫеЫеЫsЫsЫšЫеЫšЫsЫšЫъЪЫsЫsЫšЫеЫšЫЫУЪУЪˆЪaЪъЪъЪъЪъЪ&ЪџЩиЩџЩ&Ъ&Ъ&ЪaЪџЩиЩџЩџЩиЩиЩ&ЪЩЩЩOЩOЩЩOЩЩЩЩЩЩэШOЩЩvЩvЩЩЩ‹Ш‹ШЦШЦШЦШЦШЦШэШэШШ‹ШЦШ*Ш*ШdШ‹Ш*ШлЧ*Ш*ШлЧШШШШ*ШШ*ШШлЧлЧлЧлЧлЧyЧлЧyЧЁЧЁЧЁЧлЧШлЧyЧyЧЁЧЁЧЁЧЁЧЁЧЁЧyЧЁЧЁЧЁЧЁЧЁЧyЧЧyЧRЧRЧyЧЧЧRЧ№ЦЖЦЖЦЖЦЦЦЦЦЦЦЦgЦЦgЦgЦgЦЦ-Ц-ЦЦ-ЦЦgЦ-ЦЦgЦЦпХЄХпХпХЦgЦ-ЦпХ-ЦпХЄХЄХЄХпХЦпХ-Ц-ЦЦпХпХпХЦ-ЦЄХЦ-ЦпХ-ЦпХ-ЦgЦ-Ц-ЦgЦЦЦgЦЦgЦ-Ц-ЦЦgЦgЦЦ-Ц-ЦgЦ-Ц-Ц-ЦЦgЦ-ЦgЦgЦЖЦgЦgЦЖЦgЦЦ№ЦgЦ-ЦЦЖЦЦЖЦЧ№ЦЖЦЦЖЦЦЦЧ№ЦЁЧ*ШRЧyЧЁЧЧЧyЧRЧЧЧЖЦgЦgЦgЦ-ЦЦgЦ-ЦЦпХ}Х}ХпХЄХ}ХЄХЄХ}ХBХХХ}ХХХBХЙФєФ’Ф’ФХєФХBХєФХєФЙФєФєФєФХєФєФ’ФkФЙФ0ФkФЙФєФЙФЙФ’ФkФЙФ’Ф’ФЙФkФ ФkФ0Ф0Ф’Ф’ФkФ0Ф0Ф Ф ФkФkФkФkФkФ Ф0ФkФтУ0Ф0ФkФЙФ’Ф’ФkФтУтУ ФkФkФ’ФkФ Ф0Ф0Ф Ф0Ф0ФkФ0ФkФ0ФkФ0Ф ФkФ Ф0Ф0Ф Ф ФтУЇУтУ Ф Ф0Ф ФтУkФтУ Ф’ФkФЙФkФ’ФЙФkФ0Ф’ФkФ Ф’ФkФ0Ф0Ф0ФkФkФєФХєФєФєФХ’Ф’ФЙФХ}ХєФBХХЙФ}ХЄХ}Х}ХЄХBХ}ХBХBХ}Х}ХпХпХпХпХ}Х}Х}ХЄХBХпХпХпХ}Х}ХЄХЄХпХпХЄХЄХЄХпХпХ}ХпХЦЦ-ЦпХпХЦЦпХЦ-Ц-Ц-ЦЦЦ-ЦпХЦgЦgЦgЦ-Ц-ЦgЦ-Ц-Ц-Ц-ЦgЦgЦЦgЦgЦ-ЦЦЦgЦЧЦЖЦЦЖЦ№ЦgЦ№Ц№Ц№Ц№Ц№ЦЧ№Ц№Ц№ЦRЧRЧЧ№ЦЖЦЖЦЖЦRЧЁЧлЧлЧRЧRЧyЧyЧyЧЁЧШлЧyЧyЧлЧлЧлЧ‹ШdШ‹Ш*Ш*Ш‹ШлЧлЧШШdШШШ*ШШ*Ш‹ШdШ‹Ш‹ШdШdШлЧ*Ш*Ш*Ш*Ш‹ШэШЦШЦШdШЦШэШэШЦШэШOЩэШЩЩЩOЩЩvЩvЩvЩvЩvЩЩЩЩЩvЩЩЩЩvЩиЩиЩџЩЩџЩ&Ъ&Ъ&ЪЩvЩЩaЪџЩџЩџЩџЩЩvЩиЩиЩџЩџЩaЪ&ЪџЩaЪџЩaЪ&Ъ&Ъ&ЪиЩџЩиЩиЩиЩ&ЪaЪ&ЪaЪaЪaЪaЪˆЪˆЪУЪъЪъЪУЪУЪˆЪˆЪУЪъЪъЪъЪУЪУЪъЪˆЪъЪЫъЪЫsЫLЫъЪъЪъЪУЪУЪЫLЫLЫъЪЫsЫsЫšЫќЫšЫеЫšЫеЫ7ЬеЫеЫеЫLЫsЫšЫšЫsЫsЫšЫеЫќЫќЫ7Ь7ЬќЫеЫšЫ7ЬќЫеЫќЫ7Ь7ЬќЫќЫеЫšЫ7Ь^Ь^Ь…Ь7Ь7ЬќЫ^Ь…Ь^ЬчЬ^ЬРЬРЬ^Ь…Ь…Ь…ЬРЬЭЭЭРЬ…ЬЭЭРЬРЬРЬ…ЬРЬ…Ь…Ь…ЬРЬРЬЭчЬ…ЬРЬЭЭIЭIЭpЭpЭIЭ—Э—ЭIЭ—ЭIЭpЭвЭ—Э—ЭIЭpЭ—Э—Э—Э—ЭpЭIЭвЭвЭ—ЭљЭљЭвЭвЭ3Ю3ЮвЭ—ЭpЭpЭвЭ—ЭљЭљЭ3ЮљЭвЭ3ЮљЭљЭ[Ю[Ю‚Ю3Ю3Ю3Ю[Ю‚ЮМЮМЮМЮ‚Ю‚Ю[Ю[ЮМЮ‚ЮфЮфЮфЮМЮ3ЮМЮ Я Я Я ЯМЮМЮфЮМЮфЮМЮ ЯEЯmЯ ЯМЮфЮ‚ЮфЮ‚Ю‚ЮфЮ‚Ю‚Ю‚Ю[ЮфЮ ЯМЮEЯ ЯфЮ ЯМЮМЮМЮМЮ ЯфЮ‚ЮфЮ ЯМЮ‚ЮфЮ‚ЮфЮ ЯфЮфЮ ЯфЮ ЯфЮфЮЇЯ ЯEЯEЯфЮфЮEЯ ЯEЯmЯ Я ЯфЮфЮфЮфЮ ЯEЯEЯmЯEЯmЯEЯЇЯmЯmЯЇЯЇЯЮЯЮЯЮЯЮЯmЯЇЯЮЯЮЯmЯЮЯЮЯЇЯЮЯіЯ0а0аіЯіЯіЯіЯ0аЙааЙааWа0а0аіЯЮЯ0а0ааа0аіЯЮЯіЯЮЯЮЯ0аіЯ0а0аWаWаааWаWаWа0аа0а0ааWаWааWа0а0аіЯ0а0аWа0аWаа0аіЯЙааабаWаЙаЙаЙааЙаЙаббBббраЙараBбiбЄбBбBбрабBббiбЄбЫбiбiбЄбЫбiбBбЫбђбЫбђбЫбЄбЫбЫбђбЫбiбiбBбЄбЄбђб-вђбTвЄбђбЫбЄбЫбЫб-вђбђб-вђбЄбЫбђб-вTв-вTвTв-вЫбЖвЫбTвнв{вTв-вTв-вђбTвЖвЖв{вЖвЖвЖвнвTвЖвгнвнвнвг{вЖвнвнвггЖв?гШг{вЖв?гг?г?гнвШгяг?ггЁгfгг?гЁг*дяг?г?гЁгШг?гЁг*дяг*дЁг*дягШгЁгягQдQдяг?гягягfгШгŒдŒдГд*дШгяг*дQдкдекдкд*дŒдГдГдГдžеžе<еГдŒдкдŒдQдкд<еџеџекд<еееŒдХеХе'ж<екд<еее<е'ж'ж'ж<еžеcеcе<еNжNж'жХе<еХеХе<еcеNжˆжˆжcеХеџеџеcе'жˆжˆж'жеџеџеХе'жАжАжАжХе'жNжџе'жАжззˆжNжзжзжˆжАжзжззжNжзжзжззж9зšзСззАжз9з`ззжšзСз`ззж9зšз9зз`зСзСзз9зСз`з9з`зСз#иззж9зšзšз9з9зJиšз`зСзСзќзќзšзšзќз`зСзСзќзќзšз`зќзšзšзšзСзšз`з`зšз9з`зСзќз#иќзќзšзСзќзJи#и…иЌиќз#иСзСзСз#иJи…иJи#иќзќзќзќзJи…и…и#иќз…иЌиJиJи…и…иJи…иќз5й…иќзЌи#и…и…и#иЌиййpй…иJи…ий5йЌиЌи…ий5й5йй5йpйгий5й—йОйpй—йОйpйОй—йОйљй кљйљйОй—йОйљйGк‚кGк к кGкљйљй кGкЉк‚к‚кЉк‚кЉклїкїкл€л€лакїклYл€лЇлYлїкYлЉклїкак€лYл€л€лтлЇл€лЇл мЇлЇл мтлтлтл м0мkм’м’мkм м0мЭмЭм0мЇл’мkм’м’м’м’мєм мkмVн’мЭмЭмЭмєм’мтл’м}нємЭмн}нн’мЭмVно}н}нVн}нVнkм’мЄнЄнЄн}нпноємЭмпнЄн}нЄноAо}ннємhопнпнопнAонннVнёоооЧр>ррSпёоёоhоAоЄннЭмЭмkм0м мЭмЭм мVнЧрюрzпЁпzпzпЪооAоЄн}нVннємЭмkм0м€лЉкакак‚кљйpйpйгиJиСзСзСзСзз`зСз`зšз`з9з9зззжз'жХеџеџе'жџеžеcееŒдекде'ж<еХеХеcеcеžеХеХе'жNжNж'жХеХе'жˆжзж9зззжзз`з9з`з`з`з`з9ззšзšзšзСзJиJиJи…иЌи#и#и5йpйй5йй#иСз#изжзж…иСзз9зХеАжcеее?гfгГде<еˆжзж#и#иќз5йЌийGкл0мнЄноооhопЁпЧрPссисwсwстисaтътууЎу‰т‰теу^ф"хЋхљхљхљх4цНцFчЯчКшщjщjщjщ-ъоъоъШыкьŒь<эwэ<эwэ'ю‰юТя§яТя$№яТя^№†№6ё˜ё6ё6ё6ё†№6ё6ё˜ё2ѓmѓmѓЯѓЊђ2ѓєXє/ѕЬѕ/ѕ‘ѕѓѕjѕії@їRјј№їRјЩїЩїRјјљАњьљХљьљХљuњўњ`ћrќдќ­ќ6§дќдќ˜§˜§HўбўЊўбўoўц§˜§!ўбў•џZџ3џјўHўц§HўЊў3џуџ•џ3џјўHўoўјўoўZџМџјўZџoўП§!ўЊўЊў3џјўoўoў]§П§ЊўЊў3џ•џјўбў!ўћќ6§П§HўZџoў˜§ц§ћќдќ]§]§oўП§6§6§­ќдќдќћќћќ6§дќKќ$ќщћ`ћТћ‡ћщћrќщћТћ9ћњАњзњўњ$ќзњuњ`ћNњХљuњАњўњ`ћњNњХљьљўњuњњзњАњdљГјГј№їyјRјГј<љјRј@їЃіїgїЩїRјRјŽїgїіѓѕїїgїјїgї@їЬѕѓѕUііоіgї@їŽї@їЃіgї№їdљАњХљњьљГј‹љХљьљ9ћТћўњўњАњNњзњ`ћдќ!ўћќдќ­ќ9ћщћrќrќ˜§Hў˜§!ў˜§ћќ!ўЊўZџЮlІІ3џ•џІWSŽyмSyЧЏЏ&џэvr5 – ц 5 Ќ # ц б Z ѕ Ю 1 “ Ј у ѕ  Ыр B яPPPfя;8ш§СжM_СгGЉ G\—2 k.UЬт.@Ђ=лR{@RxБŸлRxŸ(л+k.ЗЩоU@kCЗ{=ДДЗ+==Д+ЂЩŸЦ(ЦŸБOБœtУ_ œ§!˜!Њ"3#Њ"!"Р!њ!•#Y$Э%Щ''Є&V&є%}&(=)џ*ъ+У+7-^-7-в.E0Й1Ж3345Ё4Q5ˆ7s8: <Љ;Я<І=с=ѓ>н?QANC9D›DKEщDKEoG2HЭIKпJ|KЃKЃKSL M‹N%P‡P‡PщP`P`PдQ]R–S UZTEUуTT“UVVAWSXYЕXYЕXмXPZ;[M\ж\8]8]8]Џ\™] _\_“aКa“aсa“abUcdReŸfŸfbg‰gbgth$i­i\kхkхknl lƒkїl€mjnpоoоoЗoЬnЗoЩpЩpлq=r=rryqqДqДq‹rvsэrdr=ryqлqэr(sиsatџsџsБs(svs:tLu6vќu^vчv6vПvЊwy’z{рzрzЙz0z{B{}{T|Ы{Ы{B{WzЙzЄ{{Ы{Ы{рz’zуx3x€yy•xZx!wLuџsdrRqq@pp@poUoo’n@pЩpДq(svsvsџsБsБs:tџs­u!wpwpw˜vsuеu6v!w3x3xHw!wчvчvЊw xМx€yEyуxуxZxуxEyЮyрzрz z zМxбw xбw•xyМxуxEyЇy0z’z{-|T|T|T|||T|-||}T|T|-|Ы{Ё}‹~э~Фџ‹~Ё}|Є{-|T|Ж|y}№|№|№|-|Ж|}Ш};vГ~Г~Ш}}~*~Q~э~‹~*~Ё}T|-|-||}?}Ы{B{’zЮy’zЙz{Є{рzWz zEyуxyМxEyypwчv^vеu6v­uќu˜vеusuУtБsиs:tџs:tУt:tиsOsOs:t›tџsБs=r№p@p’n nCn€mсm nїl•lGl lЊkƒk\kGlњj_ithЦfŸfЦf=fŸfЦfffRedd@ddЩdЩdddЅbCbcUcоc{dcbЯ` _J^ш]™]8]ж\M\™]Џ\;[‰[‰[M\_]_]™]™]8]™]Ћ^J^\_\_Ћ^г^"^™]ш]J^J^4_q^ш]_]M\M\M\Ф[ы[ы[йZ[йZ)ZВZйZ;[‰[[wZюYмXYЧYeYwZЧYЕXSX~VV~VпVпVAW~VЭUЭUуTЈTZTјSјSјSбS4SЋRrQQ‡PФO%PœOœO;OœOœOœOuOФOФOO;ON>M>M>MyMNN№LL|K‘JVJЭIІIkIYHYHЉGHGoGПF—FПFћE­E`DАCuCАCўCўC9DuCьBХBcBŠB'C'CuCNCХBBQAŽ@Ш@Ž@Ш@я@н?Ы>>Я< рюрŒрzппЄнннkмємпнЭм мЇл к к кОйїкакОйpйСззжззжзšззжџеХе*д?гfг?г*д*дЖвЫбWаWаавЭ ЯаЇЯ[ЮРЬЫ&ЪˆЪУЪЫУЪvЩэШЧBХЄХ}Х}ХЖЦЄХЙФ’ФїТnТ•Т3ТУ€УnТƒСР§О%П%П§ОеПLПœОŠНМлЛЛ№КДЛДЛgКЗЙѓИ1З ЖОЕƒЕЈЖаЖхЕњД_ГъВъВˆВ†ГшГЏВˆВиБА)АА ЏАЏЕЎ,ЎЌWЌ­ЙЌѓЌ0ЌЌЮЋ•ЊƒЉЊЉ•Њ!Љ˜Ј!ЉцЈ!Љ6ЈдЇ˜ЈдЇцЈ ЊПЈПЈЈKЇЈ˜ЈПЈ3Њ•Њ!ЉHЉ]Ј6ЈHЉƒЉМЊЇЋЋЋ•ЊHЉ ЊЋЋWЌЙЌЮЋЌЇЋЋЇЋ0ЌѓЌЎ|­­B­Ќ0ЌЙЌѓЌgЎЕЎЫ­Ы­ЙЌЮЋ‘ЌѓЌB­gЎЃ­B­‘ЌЮЋЮЋ‘ЌЙЌЃ­,Ў­|­ЙЌEЋ‘ЌЙЌ­ŽЎЫ­Ѓ­B­ЮЋWЌB­B­ЎŽЎЃ­Ы­ЙЌЮЋЙЌѓЌЫ­ЕЎgЎЫ­Ѓ­‘ЌЌѓЌ­,ЎЕЎЫ­Ы­ЙЌЌ‘ЌѓЌ­ŽЎŽЎ|­|­‘ЌЇЋWЌWЌB­B­‘ЌЌЇЋЋуЊЇЋЮЋ‘ЌЮЋЇЋEЋ ЊбЉМЊМЊEЋEЋ3Њ ЊЊЉцЈƒЉ ЊЊЉ•Њ•Њ!Љ!Љ­ЇщІдЇЈПЈЊЉПЈЈrЇАЅ9І`І›І­ЇдЇТІТІvЅdЄ'ЅNЅџЅщІАЅvЅэЄ+Ѓ+ЃyЃДЃэЄ'ЅлЃRЃЂUЁЗЁоЁgЂyЃ@Ђ|Ёѓ ŸŸсŸсŸѓ ѓ сŸŸFž[ффmžКŸЯžЊ!†›_›ш›œњœ!­›†›tš'™9š9štšœ_›š‰™˜ю—w˜<˜b™ы™<˜Г—z–.•ё•ё•Ё–<˜Ш–@–ё•C”C”.•••Ё–•}”X“Н‘Я’Я’X“Ѕ”є“1“ “[‘Ћ[‘Н‘1“X“’ф‘4‘™"в ‘F’Н‘в4‘™™™4‘Н‘ ‘ЋРLŽЎŽ77pЋ™7ы:%ŽtŽ7p™tŽБŒы%Ž™^tŽ%ŽPŒe‹PŒPŒLŽœ:wŒЕŠ)ŒwŒŒ‹bb)Œю‹>‹‹)ŒЧ‹Ч‹bБŒйŒБŒŒ‹wŒ)ŒРIБŒe‹€† ‡Э‡ˆИˆЪ‰Œ‹мŠzŠ,Šпˆ‰ё‰Ъ‰Œ‹ю‹ЕŠмŠё‰ИˆЪ‰zŠŒ‹Œ‹ЕŠzŠSŠё‰ё‰мŠмŠю‹>‹ЕŠмŠSŠ,ŠzŠ‹Œ‹ю‹Ч‹‹ЕŠё‰zŠ>‹ЕŠ‹ю‹мŠЕŠё‰,Š‹ЕŠмŠPŒe‹‹ЕЉ,ŠЕŠЪ‰>‹Œ‹>‹мŠЪ‰Иˆ‰‰ё‰Ч‹>‹zŠSŠпˆИˆh‰‰zŠe‹ЕŠSŠЪ‰}ˆИˆh‰‰>‹ЕŠ,Š,ŠИˆ}ˆA‰Ъ‰SŠe‹,ŠЪ‰h‰є‡Vˆпˆh‰zŠмŠ‰ё‰}ˆЭ‡ИˆИˆё‰>‹Ъ‰h‰h‰’‡Э‡Vˆ}ˆSŠ,ŠA‰‰Э‡т†ˆˆИˆ,ŠA‰ИˆVˆт†k‡’‡’‡A‰A‰}ˆVˆ ‡†k‡Э‡є‡A‰пˆVˆ’‡Y†Л†D‡Э‡‰h‰}ˆˆ’‡†Л†’‡є‡h‰Иˆˆє‡Y†Л† ‡т†Иˆпˆ’‡Э‡т†–… ‡k‡k‡A‰}ˆD‡D‡ї…а…Y†€†Э‡Vˆk‡k‡Л†o…†Л†D‡}ˆє‡D‡ ‡o…а…€††’‡}ˆ ‡Л†Y†G…–…ї…Л†є‡Э‡Л††Ћ„Ћ„–…o… ‡Э‡Л†Л†ї…„„ц„o…а…т†Л†ї…ї…Ћ„"„ц„ц„ї…т†–…o… …rƒ"„ц„ц„†ї…G…G…дƒrƒ]„"„–…Y† … …Ћ„rƒдƒдƒћƒo…G…]„"„rƒƒдƒдƒ …ї…Ћ„]„ћƒ‡‚Ў‚дƒдƒ …G…"„"„ƒ`‚ƒƒћƒG…"„"„ћƒ‡‚‡‚7ƒщ‚„„ц„rƒrƒщ‚з`‚Ў‚ƒ"„дƒ7ƒщ‚:u`‚‡‚дƒћƒ7ƒrƒ%‚ў`‚щ‚"„дƒЎ‚Ў‚œ:ў`‚дƒ"„7ƒ™ƒ‡‚:%‚‡‚Ў‚]„™ƒщ‚Ў‚uuзў7ƒћƒ7ƒƒ‡‚:ў`‚щ‚ћƒ7ƒƒщ‚œ:з‡‚7ƒ"„™ƒщ‚‡‚з‡‚ƒ7ƒ"„"„дƒдƒЎ‚`‚ƒƒдƒЋ„™ƒ7ƒƒœœ`‚`‚ƒщ‚‡‚%‚c€ь€ь€ўЎ‚œu€c€Š€ь€зœ:uœЎ‚ƒЎ‚Ў‚%‚:u%‚%‚™ƒ"„7ƒrƒщ‚‡‚™ƒ™ƒ"„o… …Ћ„„„]„Ћ„ …а…D‡D‡т†k‡т†Y†D‡’‡}ˆh‰h‰A‰пˆVˆ‰‰Ъ‰>‹Ч‹e‹)ŒŒ‹>‹ю‹PŒ%Žыы%Ž:btŽРIч"ч™p ‘4‘F’Ј’’ф‘[‘–‘’Я’є“Ѕ””є“є“X“}”••z–z–@–Ё–ё•ё•Ш–—ю—<˜<˜w˜˜ю—˜ž˜b™ššА™ы™‰™'™ы™ы™§š†›§š§šжš›š$›_›†›вœвœ˜œ˜œш›qœ˜œвœ[mžфЊ ž‚mžЯžXŸ сŸКŸ КŸXŸC j ѓ оЁ|Ё|Ё|Ёѓ UЁЗЁЂ№Ђ+ЃЩЂ№ЂŽЂЩЂRЃyЃЄžЄdЄdЄžЄ<ЄdЄэЄ'ЅџЅТІ9ІТІ9ІзЅ`ІщІ$ЇrЇ­ЇrЇ­ЇrЇ­ЇдЇџЅ`І­Ї­ЇЈЈЈ!ЉбЉ Њ•ЊМЊЋEЋЋЇЋ0ЌѓЌЃ­Ў,ЎŽЎЕЎЏ>ЏЧЏ)АВА;БэАБэА;БиБ&ВЏВ$Г$Г†Г_Г$ГшГшГJĘĘДгĘДqДгДгД5Е ЖGЖ ЖхЕОЕ\ЕОЕхЕ ЖїЖїЖаЖЈЖGЖnЖїЖYЗ1ЗаЖЈЖnЖnЖхЕnЖаЖЈЖаЖїЖЈЖnЖхЕхЕїЖаЖ1ЗКЗїЖїЖаЖGЖGЖЈЖаЖїЖїЖnЖnЖ ЖхЕGЖGЖаЖїЖGЖGЖЈЖ Ж Ж ЖGЖЈЖnЖ Ж Ж Ж Ж ЖхЕGЖЈЖnЖЈЖnЖ Ж Ж ЖЈЖїЖЈЖЈЖnЖОЕОЕ ЖnЖ ЖnЖGЖхЕхЕ\Е\ЕОЕхЕ Ж Ж ЖОЕƒЕОЕОЕƒЕОЕnЖ ЖхЕОЕњД5ЕƒЕ\ЕхЕхЕƒЕ\ŜĘД5Е\ЕƒЕОЕ\Е5Е\ЕњД5ЕƒЕ5ЕОЕОЕ\Е\ЕгĘĜДгД5ЕОЕ5Е\Е\ЕгДњД\ЕОЕхЕхЕхЕОЕхЕОЕ ЖхЕ5ЕnЖЈЖ ЖGЖ5Е5ЕƒЕ\ЕОЕОЕƒЕƒЕƒЕƒЕ Ж Ж ЖnЖGЖЈЖnЖхЕхЕ Ж Ж ЖGЖОЕƒЕгДqĘДJДшГшГшГшГшГ†ГшГСГĘДгДњДњДqДСГСГшГшГJДД†ГСГ†Г_Г_Г†ГСГqДДшГСГ†ГСГшГДДшГшГшГ$ГГ_ГСГСГСГшГшГ†ГъВГЏВaВ$Г$ГГъВaВџБ&ВaВˆВЏВˆВaВџБ;ББ)АВАБdАА ЏyЏ>Џ№ЎŽЎЕЎ>ЏyЏА)АdА‹АВА;БvБ&В&ВˆВˆВaВˆВЏВ_ГqДгДгД5Е\ЕƒЕ ЖnЖYЗ ИkИЬИkИЅИ.ЙоЙКgКЂК@КgКgККЂК№КRЛRЛRЛЛ+ЛЛ=М=МŸМOНŠНБНБНиНОŠНOНБНиНО:ОaОœОœО%ПеПеПР6Р^РРеПРРПРњР!СњРњРƒСЊСбСЊСЊСбСбС3Т Т Т3Т Т•ТМТїТEУУУМТEУ€УтУ ФЇУ0Ф0Ф Ф0Ф Ф’ФЙФєФ}ХЄХєФЄХ}ХєФgЦЙФЙФХХХBХ}ХХХBХєФ’ФЙФЙФЙФєФЙФ’ФЙФЙФЙФєФ’Ф Ф’Ф’Ф’ФЙФєФ’ФkФєФєФ’ФЙФХХХєФBХХєФХBХBХєФ’ФЙФєФєФЙФєФєФєФЙФЙФ0Ф0ФkФkФЇУ€УтУEУтУ ФУ•ТїТ€УМТ•ТМТ3Т3ТбСHСПРњРƒСƒСЊСƒСЊСHСбСбС ТnТ3ТбСЊСбС Т Т Т3ТnТ•Т3Т3ТбСЊСnТ•ТnТ•ТnТnТnТnТnТ•ТМТМТEУїТnТ•Т3ТnТ3ТбС3Т•ТбСбС ТЊС3ТбС Т3ТnТ•ТnТƒСбСHјМИРПРHС!СHСHСбСбСЊСЊС!СHСМТ ТЊС Т Т ТбСбСбСЊС3Т3Т3Т•Т•Т ТnТ Т Т3Т ТМТМТnТ ТЊСбС Т Т ТnТ Т Т ТбС Т3Т Т3ТnТ3Т3Т Т!СƒСЊСЊС3Т ТбСЊСЊСƒСЊСбСбС ТЊС ТЊС!СHС!СбСЊСеПеП†П­ПLП­ПеППР6Р†П­ПLП†ПР­ПРLПLПLϭϘРРР6Р6Р6Р^Р^РеПИР6ИИР!јИРПР6РПИРHСHСПРњР^Р†ПеП6Р^РПРПРПРњРњРњРбСбС3ТМТїТїТ•Т•ТEУУ€У0Ф’ФkФХ}ХєФХХХ’ФєФЙФєФєФ’Ф}ХпХХ}ХєФЙФЄХпХпХgЦЄХ}ХЄХпХ}ХЦпХЄХЦgЦ№ЦлЧyЧЖЦ№ЦЧRЧyЧЁЧRЧЧЖЦЖЦЖЦЖЦЦ№Ц-ЦЦ-ЦпХпХ-Ц-ЦЄХХEУїТЇУ ФЇУ ФkФ€УЇУ ФтУ0ФЙФ0Ф0ФkФЙФ’Ф0ФkФ Ф ФkФkФ’ФЙФ’ФЙФ’Ф’ФЙФkФ’ФХєФЙФ’ФkФ’ФЙФєФєФєФєФєФЙФ’ФkФ’ФєФ’ФЙФєФЙФkФkФ’Ф’ФХєФєФЙФkФтУ0Ф0Ф0ФkФ’Ф0ФтУЇУїТEУЇУтУтУEУEУEУEУEУEУ€УЇУтУУУEУМТїТEУ€У Ф€У€УїТ3ТМТ•ТїТУМТ•ТnТ3ТnТnТМТ•ТМТ•ТnТnТбСnТбС Т•ТМТ•Т3Т ТЊСЊСƒС3Т3ТЊСHС!СƒСƒСЊСбС ТбСƒС!СњРњРHСHСЊС ТƒСHќИРПРПРПР!СHС!СПР6РеП6Р^Р^ИИИИР^Р6Р^Р6Р^ИР^Р6РеП†П­ПеПР6РеПеПеП­П%П†ПеПеПеП­П†ПLП§О%П%П†П­П†П%П%ПœОœОLП%П†ПLПLП%ПУОУОУО§ОУОУО§ОУОœООиНaООœОУОaОaОœООaООaОУО:ООБНOНэМOНБНиНиНŠНŠНЦМ(НOНЦМŸМŸМdМdМ=МdМdМdМ=МЦМŸМ=МММŸМЦМэМ(НdМŸМэМ(НŸМЦМOНŠНБНaООиНиНБНБНŠНиНОиНŠНэМБНУОaОиНиНОиНиН:ОaОœОУО%ПaО:ОaОУО%ПУО­ПеП†П%П%ПУО­ПLП†ПеϘРеПРеП†П˜Р˜РПРњРњР˜РњР˜РњРЊСƒСƒСПРHСЊСHСHСƒС3ТЊСHСƒСЊСбСЊСHСHСЊСбС3ТnТnТ3Т3Т Т Т ТnТ•ТїТEУУїТ•ТМТУEУ€УЇУ€УEУEУУEУ€У€У0ФтУтУЇУУ€УEУтУ0Ф’ФkФЇУ€УМТїТ€УїТїТїТ•ТnТ•Т3ТnТїТУEУУМТ•Т ТnТnТ•Т€УEУМТМТnТ•ТМТМТEУEУїТїТ•Т3Т•Т•ТМТУїТМТ•ТnТnТМТnТїТ€УУУ•Т•ТїТУУїТEУїТМТїТМТУУУУїТУУМТМТМТУEУЇУЇУ€УїТМТМТМТУїТМТ•Т•ТnТ Т ТnТnТ•ТnТбСƒСњРHСƒСбС3ТбСƒСƒСПРПР!СƒС3ТбСƒСƒСњРHСƒСƒСƒСЊСЊСƒСHС!С!С!С!СƒСбСЊСHС!СњР!СƒСƒСƒСƒСЊСƒСHСƒС3ТЊС3ТnТ Т ТбСбСбС3Т3ТМТМТnТ•ТnТ3Т•ТnТМТУУУ•Т3ТЊСЊС3ТбСбСбСЊСЊСƒСƒСHСЊСбСЊСƒС!СњРПРњР!СHС!СПММИМРHСЊСЊСƒСƒСHСHСHСƒСHСЊС ТƒС!СHС!СњР!СHС ТбСƒС!С!СПРПИМР!СПИР^Р6Р^Р^Р6Р^Р^РРеП6Р^Р6ИРПИР^Р6РРеП­ПРР6Р^РРР­П­ПРРеПРеПеПР­П­П†П­ПРеПРеП†П­ПеПеПР^Р^Р6РеП­ПеП6ИИРПРПРПР6Р^ИИИМРПР^РПР^ИМИР6ИР^ИР!СЊСHСHСHСњРПРњР!СњРHСHСПРР^Р^Р^ИР^Р^РПР^Р6Р6РеПеП­П­ПеП†П§ОœО%П%ПLП­ПLП§О§ОœОœОœОУО§ОУО%П§ОaООиН:ОaОœОaО:О:ОБНиНиНО:ОО:ОиНиНОБНŠНО:ООиНŠНŠН(Н(НOНOНБНиНиНŠНOНOНэМŠНиНБНŠН(НэМOН(НOНŠНŠНБН(НэМ(НЦМЦМOНŠНOНŠНOНЦМŸМЦМŸМЦМ(Н(НOНOНŸМЦМэМэМЦМэМ(НŸМŸМdММŸМЦМŸМŸМŸМЦМŸМ=МdМ=МdМdМdМdМdМdМ=МdМЦМŸМэМэМ=М=МdМ=МŸМŸМdМŸМdММŸМdМ=МЦМЦМэМOНOН(НэМ(НЦМЦМЦМэМЦМŸМЦМŸМŸМЦМŠНOНOН(НэМэМ(НŠНŠНŠНБНБНŠНOНOНБНŠНOНиНО:ОaОaОО:ООaООaОУОœОœОœО§О§О%П§О§О%ПLП†П†ПLПLП­П­П†П­П­ПР^РРРеПеПРР^Р^Р6Р^ИР^ИММММИР!СƒСƒСЊСбСЊСƒСƒСбСбС Т3Т3ТбС3Т3Т ТnТМТ•Т•Т•ТМТМТ•ТМТУ€УУEУЇУ€УЇУ€УтУтУтУтУтУ0Ф Ф0ФkФkФ’ФkФ’ФЙФХєФХBХХBХЄХ}ХЄХпХЄХпХ-Ц-ЦЦЦ-ЦЦЦЦЦ№ЦЖЦ№Ц№Ц№ЦyЧЧЧЧRЧyЧЁЧyЧЁЧЁЧЁЧШШШ*Ш‹ШШ*Ш‹Ш*ШэШЩэШЩOЩэШЩOЩЩиЩOЩvЩиЩЩиЩиЩЩaЪ&ЪџЩ&ЪџЩиЩџЩaЪ&ЪˆЪaЪˆЪУЪˆЪaЪъЪЫЫLЫLЫЫLЫsЫЫsЫšЫеЫеЫеЫšЫsЫšЫеЫsЫšЫеЫќЫ7ЬќЫ7Ь^Ь^Ь^Ь…Ь…Ь…Ь^Ь…Ь^Ь^ЬРЬРЬРЬчЬЭЭчЬЭЭIЭ—ЭpЭвЭ—ЭpЭIЭЭ—ЭpЭвЭљЭвЭвЭ—ЭљЭљЭвЭљЭљЭ3Ю‚Ю‚ЮМЮМЮМЮ‚Ю[ЮфЮМЮ‚Ю‚ЮфЮEЯЇЯmЯЇЯЇЯЇЯЮЯЮЯіЯWаіЯ0аWа0а0а0аWаЙаWаWаЙаWаіЯаWаWаЙаЙааааарараЙараббрарараббiбЄбiбiбBбBбBбЄбђбђбЫбЄбЄбЄбЄбђбђб-вTв{вTв{внв{внвнвЖвЖвЖвгfгЁгfгШгягягягягягягQдQдГдГд*дŒдŒд*дŒдГдкдкдекдкдŒдŒдкдГдcеžе<еcееекдеcеžеžеcе<е<еекдеcеџеџеХеџеcеcеХеХеNж'жNжNж'жџе'ж'жˆжАжNжNжNж'ж'жˆж`зќз#иJи#иќзšзќзJиJиЌиййгиЌий…ий—йљйљйОй—йй—й кЉкакЉкЉкЉкGкаклїк€л мYлЉкїкакїклЇл0мтлтл м мтлkмkм’мЭмємVнЭмkм’мннЄн}нЄнЄн}н}н}нhоhоооhоЪоhоЪоЪоЪоSпппSпSпёоSпЧрюрсPссЧрŒрссwсисттисисБстт:тaтaтУтУт:тттт‰тътуУтaт‰т‰т‰тътЎуsуsуЎуLуLуsуЎу7ф7ф^ф^фќуќу^ф…фIхвхЋхвхљхРф…ф"хчфчфчф"хРфќуsуРфчфчф"хчф7фЎуsуsу^ф^ф^ф^фќуеуsууЎу7феу^ф7фЎууУтaтистaтуътУт‰т:т:ту7фќуЎуsуЎуsуsуЎу7ф…ф…ф…ф"х"хpхIхРфчфвхвхвхвхвх[ц–цНцmчmчЯч1шЯчічЯчXшщЄщЄщЬщъъъщjщЄщъъъUъUъъоъ?ыШыШыЁыzы?ыоъ?ы?ыШы*ьШыьШыQь*ь*ьŒьŒьШы*ьQь*ьькьŒьQьŒьШыЁы?ыzыЁыzыыzыzы?ыыЖъоъы?ыzыШыzы?ыzыыыы?ыzыШыьььШыЁыЁыШыШыzы?ыzыоъЖъыоъоъ?ыыыоъоъыоъыzыЁыШыьШыzы?ы?ыьььььШыьь*ь<ээwэwэQьQьQькьэžэžэьzы?ыоъUъ-ъ-ъjщсшКш1шічЯчсшЄщЬщЬщjщЄщсшщCщЄщКшщщщсшсшCщ’ш’шXшЈчmчч4цљхЋх–цmчFчFчљхљхЋхpхЋхљх[цљх4цЋхIхЋхpхpхљхвхљхљхpхpхЋхpхвхЋхpхpхpхIхpх"хЋхЋхpхpх"хРфРфРфчфРфРфчфчфРф…фРфРф…ф…фРф…ф^фќуќуеуЎуЎуеуЎуЎуЎуеуЎуеуЎуќуќуќуќуќуsуLуууsуsуеуеуsууsуЎуеу^ф7ф…ф7феуsуУтъту‰т‰т‰тБсисБстУтaтисиссюрюрŒрŒрЧрюрЧрюрŒрŒрсюрБс‰т:тaтБсPсБсУтуътaтaт‰тaт‰тътУтУтLууътLуLуLуЎуsу7ф…ф7феуеуеуќу^ф^ф…ф…фРф…ф…фчфчфчфчфчфРфРф"х"хIхчфIхЋхљхљхЋхЋхљхЋхЋхвх[цXшFчфцНц[цНц–ц–ц[цНц[ц4ц[ц4ц[ц4ц[ц–ц[ц4ц4ц[цљхљх4цљхЋхвхpхЋх"х"хIх"хIхIхpхЋхIхpхpхЋхЋхЋхЋхвхљхљх–ц–ц–цНцфцНцНцmччічКшКшКшсш’ш1шCщjщЄщъjщъъщ-ъъUъъЖъоъоъоъы?ыzыzыЁыЁыЁыШыЁыьЁыШыQьŒьГькь<эŒьwэžэХэžэwэžэюХэююХэ'юNюNююNю'ю'юNю'юNю‰юяыюя9я9яtя›я›яТя§я$№^№$№$№^№†№­№6ё˜ёљё!ђПёПёПёПё[ђ[ђЊђфђЊђфђ ѓ2ѓmѓ”ѓ”ѓЯѓіѓXєєІєІєсєXє”ѓєіѓЯѓXєєєєєІєІєєіѓєсєІє/ѕєіѓXєєсєjѕjѕ‘ѕІєѕсєєXєІє/ѕІє/ѕѕ/ѕѕєсєсє/ѕ/ѕЬѕѓѕjѕjѕ/ѕ‘ѕjѕ‘ѕ‘ѕ‘ѕ‘ѕjѕіѓѕЬѕѓѕѓѕUіЃі|і|і|іЃіЃіоіgї|іЬѕUіЬѕ|і|іі|іЃіЃіUііѓѕѓѕііі|ііЬѕѓѕѓѕѓѕѓѕіUіЬѕіЃіUі|і|ііUіѓѕ|іЃіЃіоіоіЃіЃіЃіоіїї@їŽїЩї@їоіЃіѓѕUііѓѕЃі|ііѓѕjѕjѕjѕjѕjѕЬѕ‘ѕ‘ѕ/ѕѕѕѕсєѕ/ѕсєjѕ‘ѕѕѕсєѕ/ѕсєєєmѓmѓіѓЯѓєєЯѓєmѓЊђфђ ѓфђ ѓфђфђ2ѓЊђ[ђ[ђ‚ђЊђЊђЊђЊђ!ђ˜ёљё˜ёПё‚ђ!ђ!ђ!ђч№Пё‚ђПё‚ђЊђ‚ђЊђ[ђПё!ђ[ђ[ђ[ђ[ђ‚ђ!ђљё!ђљёљё!ђ‚ђ‚ђ‚ђљёpёПё!ђ!ђфђфђ‚ђ‚ђљё!ђљё!ђ[ђ‚ђфђ‚ђ‚ђ!ђ!ђЊђ‚ђ2ѓфђ‚ђЊђљё[ђ‚ђ[ђЊђ ѓ‚ђЊђЊђ!ђ‚ђЊђЊђ2ѓmѓ”ѓ2ѓЊђ‚ђ ѓmѓmѓ”ѓ”ѓ2ѓmѓ2ѓmѓmѓ ѓЯѓіѓЯѓ”ѓmѓmѓЯѓіѓєXєXєєіѓіѓЯѓЯѓіѓєєєXєXєіѓєєXєXєєєXєіѓіѓєXєсє/ѕєіѓіѓmѓ”ѓЯѓіѓXєєєіѓ”ѓ”ѓ”ѓ”ѓіѓXєєєіѓ”ѓіѓіѓєєєєXєЯѓЯѓєXєІєІєXєєmѓЯѓіѓіѓєXєXєєЯѓmѓ2ѓmѓ”ѓєє”ѓЯѓіѓЯѓXєЯѓєІєXєєіѓєєXєєІєІєІєсєєєєєІєІєІєсєѕІєѕІєІєѕсєсєєєXєXєXєєXєXє”ѓ[ђ!ђ[ђ‚ђфђфђ2ѓ ѓЊђфђ ѓ ѓ2ѓЯѓіѓіѓXєєXєXєІєІєѕ‘ѕЬѕ‘ѕЬѕЬѕ‘ѕЬѕііііЬѕіѓѕUі|і|і@їїgїUіЬѕіUіѓѕЃі@їЃі|і|іі|іЃі|іЃіЃіоіЃіUііі|іЃі|іоіоіЃіїЃіЃі@їŽїgїgї@їїїїgї@їgїgїŽїŽї@їŽї@їЩїŽїŽї№ї№ї№ї№їŽїЩїјyјyј№їјјјRјRјГјлјГјлјГјyјyјRјГјљГјлјГјyјyјyјyјГјГјлјЩїЩїјЩїЩїљГјŽїЩїŽїgїgїŽїgїЩїЩї№їŽї@ї@їgїŽїјŽїgїЩї@ї@їїоіїgїgїїЃі|іЃіі|іЃі|іЃіЃіЃіUі|іUіUіоі|іЃі|іUіі‘ѕjѕUі@їЬѕѓѕЬѕjѕ/ѕЬѕоіUі|іUіUіЬѕ‘ѕіі|іЃіЃіѓѕ/ѕjѕ/ѕіѓѕUііЬѕЬѕ/ѕ/ѕсєѕѓѕѓѕіUіUіUіі|іоії@їgїŽїgїЃіgїŽїїŽїgї@їgїŽїŽїЩї№ї№ї№ї№їјјЩїј№їјyјлјyјГјГјyјyјлјљлјљГјyјyјГјљљ<љљ<љdљdљdљХљ‹љХљNњuњuњNњNњNњuњАњ`ћ9ћ`ћ‡ћ`ћўњ9ћ9ћТћKќrќ­ќћќrќ­ќдќћќП§П§ц§ц§ц§!ў!ўoўбўZџEEуџуџlWІЮ‘рИр‘ІЮWрAAЪiЃЪ,>>ЧЧЧ)э;vvvФ&MЏщщrЏЏ8r] „ „ ц Ќ ц o ј б б – 5 ј  Z  Z Z    Ј у 1 l l l “ l l ѕ   W Ю Ю W ~ Ѕ BЫiiђTЂн{{TђЫT{TTiiђђTЂTЂЂ>нЧ>f>ff>ЂннЂ{ЂЂTЫBBBBЫiр р Ѕ Ѕ iiBiiBBЫBiBiЫЫiiЫBђiBiiiЫЫiр р BBBЅ ~ W ~ ~ Ѕ   1 Z “ “ Ю ѕ “   ј – o – б б – o o Ќ Ќ Ќ Ќ ц Ќ ] ] # ћћћћššrщщщЏЏ&Mџ&&џ;;‹‹vээ‹)Ч)  мŽŽŽŽ,ЪAAИр‘/EМџ•џМџМџZџ3џoўoўHўц§ц§ц§ц§П§6§rќ$ќ$ќKќKќKќ$ќТћ‡ћАњuњNњNњАњNњХљьљdљ<љ<љлјљљГјГјјŽїŽї@їŽїЩїЩїŽїоіїЃіЃіоі|іЃіUіѓѕіjѕ‘ѕ‘ѕjѕЬѕѓѕ‘ѕ‘ѕсєІєсєІєѕсєсєІєєіѓЯѓЯѓЯѓєєmѓ2ѓ ѓЊђфђфђЊђЊђ‚ђ!ђПёpё˜ё˜ё˜ёПё˜ё6ё­№$№^№^№Тя†№^№$№§яtяяыюяАю9я9я‰ю‰ю‰юю'ю'ю‰ю‰юю'юwэ<э<э<э<эžэ<эээГь*ьQьŒьŒьŒь*ь*ьШы?ы?ыыоъыzыzыыъъ-ъЬщ-ъ-ъЄщЄщjщщКшКшсшщ’ш’ш’ш1шFчmчFчmчЯчFччFчНц[цљх[ц–ц[цљхвхIх"хчфРфчф"хIх"х7ф7фќуЎуsуЎуsууътaтт:тБсисисwсwссЧрŒрЧрeрЧрPссŒр>ррzпzпмпрЁпмпЁпппzппSпмпSппЪооhоAоhоЪоёоhоAоопнпнпнAоAоЄнЄн}нVнємєм’мємн’м’м мтл€лYлЇл м€л€лYлGкЉкакїклїкЉк‚кљй—йљйpй—й—й5ййЌи#и#и…и#иJиJи#иќзСз9ззжз`з`зšзšз`зАжˆжАжˆж`з`з9ззNжNжNжNжАжзжАжАжџе<е<еcе<еџеХеcеcеГдяг*д*дQдŒдQд*дяг?г?гfгfг*дŒд*дягШгЁг*д*дГд<ееГдГд*дягQдягГдŒдяг*дЁгнвгfгfгягЁгЁгfг{внвЖвгfгнвнвЖвTвiбЫбђбiб{вTв-в-вBбBбBбЄбЫбTвTвЫбЄбраЙаЙаiбђбђбЫбЫбiбббiбђбTв-вђбЄбBбЫбђбЫбTвђбЫбђбBбBбЄбЄбЄбЄбBббЙа0аіЯ0а0аЙараWа0а0аЮЯmЯіЯWаЙаЙааіЯЮЯ0аWаWараBбрааWаЮЯіЯіЯWаЙаа0а0аіЯЮЯ0а0аWааа0аЮЯmЯЇЯЮЯіЯаWаіЯіЯЮЯЇЯЇЯЇЯ0аЮЯЮЯЮЯmЯEЯ ЯEЯmЯіЯЇЯEЯmЯ Я[Ю‚ЮМЮ ЯmЯфЮ Я[ЮвЭвЭвЭвЭ[ЮМЮ‚Ю[ЮвЭвЭ—ЭpЭ‚Ю[Ю3Ю‚ЮвЭpЭвЭ—ЭpЭљЭ3ЮвЭвЭ—ЭчЬчЬЭ—ЭвЭpЭpЭЭРЬРЬРЬчЬIЭIЭIЭIЭРЬРЬЭЭIЭIЭIЭIЭРЬ…ЬРЬ^Ь^ЬРЬРЬРЬчЬ^Ь7Ь^Ь7Ь7Ь…ЬќЫ7ЬќЫеЫеЫеЫ^Ь^Ь^ЬЭ…Ь7ЬеЫеЫ7ЬеЫšЫеЫšЫъЪУЪšЫsЫЫsЫsЫеЫsЫsЫеЫеЫеЫ^ЬчЬчЬIЭЭЭIЭpЭвЭ[Ю‚ЮфЮ Я ЯEЯmЯЮЯраiбBбiбЄбђб-в{внвЁгягQдŒдГдŒдеcеžеˆжзжзззжšзJиЌиpйљйљйGкGкЉкЉклтлkм’мЭмєм}нVнЄнhопЁпрр>рЧрPст‰тLуќу7ф…ф…фРф"хвх–цчFчmчічmчЈчічіч’шщCщjщCщCщъUъЖъ?ы?ы?ыыzыЁыzыьГькькьŒьГькьГь<эХэžэžэ'ююwэžэю'юыюыюNюАюNюNю‰юNю9яtяяяя9яtяtя9яТяТя§я$№§яТя^№†№^№ч№ч№†№†№†№^№^№^№ч№ёч№ч№§яТяtя›яТяТяtя9я9яtяtяtя›яТя›я›я›я›яТя›я›яТяТяtя›я§яtяыюАюАюяыюыюяыюыюАю‰юАюыюяАю‰юNю‰юАюNюАю9яяыюыюАюыюыюяtя9яtяtяя9яТяТя$№§я$№†№^№tяяяыюяtя9яыю‰юNю‰юNюNюNюNююžэwээГь<э'юNю<экьQь*ь<экькьэŒьээŒьГьГьŒьГьŒь*ь*ь*ьььШыьььЁыzыzыыЁыШыШыШыЁыzы?ы?ы?ыы?ыЁыоъоъыЖъъъъ?ыЖъЄщЬщCщщщКшщCщщсшКшXш’шКшXш’шКш’шКшЯчЯчічЈч1ш1ш1шЯчЈчЈчфцчфцфцч–ц–ц[цљхpхpхвх[ц[цЋхpхIх"х"х"х"х"хIхчфРф7феуеуЎуеуеуеуЎууУтуътуsуу‰т:тт:т:тисисБсБстPссЧрЧрPсюрюрюрeрeрмпмпЁпЁпмпzпzпёоёоёоЪоhоооhоЄннVнVнVнн}н}нVнєм’м’м0мkмkмkм0м0мтлтл мЇл мЇлYл€ллакак‚кїкїкЉкGк—й—й—йОйpй—й—йpйpйййЌий5й5й5йгиЌи…и#иќзJиJи#иќз`з9ззж`з9з9зšз9з9зАжˆжˆжˆжˆжNжˆжџеХеžе<еее<еžеžеџеžеекдее<ееГдГдQдягQд*д*д*дQдQд*дШг?г?гfгЁгЁгЁгfггнвнвнвгfггЖв{в-вЄбЫбЫбђбђбЫбЫбiбiбBбBбBбЄбЄбBбрааWараЙарараЙаЙаWа0а0а0аWааіЯіЯЮЯmЯ ЯEЯmЯEЯЇЯmЯEЯфЮ‚ЮМЮ‚Ю‚ЮМЮМЮМЮ‚Ю3Ю3ЮљЭ3ЮМЮ‚Ю[Ю‚Ю3Ю3Ю[Ю3ЮљЭ3Ю3Ю3ЮљЭвЭвЭвЭ—ЭљЭ3ЮљЭ3ЮвЭљЭвЭ3ЮљЭ[Ю[ЮљЭљЭ—Э—Э—Э—Э3Ю‚Ю‚Ю[ЮљЭвЭpЭвЭ Я Я ЯљЭљЭљЭвЭфЮМЮфЮEЯEЯ ЯmЯ ЯМЮМЮ ЯmЯEЯEЯЮЯ‚Ю[ЮЇЯЇЯЮЯ0аWаіЯіЯЇЯmЯmЯЇЯЮЯ0аWаЮЯЇЯЇЯЇЯЮЯіЯіЯWааа0аіЯааЙаЄбрарабааараiббраBбЮЯЙаBбiбЄббBбраWаWаЙаWаBбiбiбЄбђбЫбBбiбBбЫбђбђбђбBббBбiбЄбЫбЫбЫбЫбЄбiбBбЄбђбђбЫбЫбЄбраBбiбЄбЫбЄбЫбiбЙаWаWаWабWаWаа0аіЯЮЯ0аіЯ0а0аЇЯЇЯ Я ЯМЮ‚ЮEЯmЯmЯmЯEЯ Я ЯEЯфЮ Я Я‚ЮфЮМЮ3Ю3Ю[Ю[Ю‚Ю[ЮвЭ[ЮpЭ[ЮEЯфЮmЯ Я Я ЯфЮ‚ЮфЮМЮфЮEЯmЯmЯ Я‚Ю3Ю[Ю[ЮфЮ ЯEЯEЯ ЯEЯEЯ ЯМЮEЯEЯЮЯmЯEЯmЯЇЯЇЯЮЯЮЯ0а Я‚Ю[ЮфЮЮЯЮЯфЮфЮфЮфЮМЮ[ЮМЮМЮ ЯEЯ ЯEЯМЮМЮфЮ Я ЯmЯmЯEЯ ЯМЮфЮфЮ‚ЮфЮmЯ ЯEЯфЮ[ЮфЮфЮМЮ ЯEЯфЮфЮфЮ‚Ю[Ю‚Ю[ЮМЮ‚Ю3Ю[ЮљЭвЭљЭ3Ю3Ю3ЮвЭ3ЮвЭIЭpЭ—ЭвЭљЭљЭ—Э—ЭчЬРЬРЬРЬpЭIЭIЭРЬ^ЬќЫ^Ь^Ь…ЬpЭpЭчЬ7ЬќЫ^Ь^Ь…ЬЭЭ…Ь7Ь7ЬšЫќЫќЫќЫ…Ь7ЬРЬќЫеЫšЫsЫ7ЬќЫ7ЬеЫќЫšЫЫLЫsЫLЫLЫsЫšЫsЫЫЫЫЫsЫšЫsЫšЫЫъЪъЪЫsЫеЫšЫsЫLЫˆЪъЪъЪLЫšЫќЫšЫsЫLЫъЪЫъЪLЫќЫќЫќЫеЫЫЫъЪЫќЫќЫќЫќЫsЫЫLЫsЫеЫќЫќЫеЫќЫLЫЫsЫsЫеЫќЫеЫеЫšЫеЫLЫЫsЫќЫ7ЬќЫ7ЬšЫъЪLЫLЫšЫеЫеЫ7ЬќЫsЫsЫЫsЫќЫšЫеЫ7ЬšЫУЪLЫšЫќЫ^Ь^ЬќЫ7ЬќЫеЫšЫеЫ…Ь^Ь^Ь^ЬеЫšЫќЫќЫќЫ^Ь…Ь…Ь7ЬеЫќЫ7Ь^Ь…ЬчЬРЬ^ЬеЫеЫќЫ…ЬРЬРЬРЬ…Ь…Ь7ЬеЫ^Ь…Ь^Ь…Ь…ЬчЬ…Ь^Ь^Ь^Ь…ЬчЬ…ЬРЬЭ^Ь…Ь^Ь^ЬчЬЭЭчЬРЬ^ЬРЬРЬчЬIЭчЬIЭIЭ…Ь^Ь…ЬчЬIЭЭЭчЬ…ЬчЬpЭЭpЭ—Э—ЭIЭIЭЭpЭIЭIЭвЭвЭ—ЭвЭpЭIЭpЭpЭвЭљЭ—Э—Э—ЭpЭ—ЭвЭ—ЭљЭ[Ю‚ЮМЮ‚Ю[Ю‚ЮМЮ‚ЮфЮEЯ Я Я[Ю3Ю‚Ю‚Ю‚Ю ЯМЮ‚ЮmЯ ЯфЮEЯЇЯЮЯЮЯЮЯЮЯmЯEЯЇЯіЯіЯ0аЮЯіЯЮЯЮЯіЯЇЯіЯWаWа0аіЯWа0аWа0аабраЙаааЙаааЙаааа0а0аWа0аарарааааWарараiбiбBбiбBббббBбЫбђбђб-вЫбЫбTвTвЖвЖвЖв?г{в-в{вЖвнв?гЁгШгШгfгfгягШгQдкдГдГдŒдŒдГдГдГдcеžе<е<екде<еХе'жџеџе'жџеžеХе'жNжˆжˆжАжАжNж'жNжАжзжззж9зззж9з9з`з`зСзšзСзšзšзšз`зќзJиќз#иќзšзСзќзќз…игиJи…иќзСзJи…ийгиги5йги…игигиги—й—йЌиЌиЌийгийpй—й5й5й—ййййй—й к—й…игиОйОй5йОй кОййги5йpйpй—й кљййpййй…и—йОййpй5ййЌи#иќз…и5й5йгиги…и#и#и#иќзЌигиЌиЌиJиJиJи…и…иЌиЌиЌиЌиJиJи#иЌиги…иЌи#и#иJиСз#и…и…игиЌиќзќзќз#иJиJиJи…иСзšзСзСз#и#и…иJи#иќз`зšзСзќзJи…и#иќзšз`зСзšз#и…и#иСз`з`зšзšзСз…иJиќзСз`з`з`зšзСзќзСзšз`ззззжз`з9з`зззжзжзжзжзСзšз9ззжNжNжˆжзж9ззАжзˆж'жNжˆжзжззжззжˆжАжˆжNжзжзжзжˆж'жХеNж'жNжзАжˆжNжХеХеХеХеNжАжNжˆж'жХеХеХеџеˆж'ж'жџеcеžеžеcеХе'ж'ж'жХеNжзNжАжзАжзАж'ж'жџеХеNжNжџеNжžеžеХеХе'ж'жNжNжNжХеџеNжџеАжАжАжзжАжˆжNжАжАжзжˆжзжˆж'жNжNжˆжзж9ззззжАжˆжзжзж`зšзšз`ззжАжАжзšз`ззззАжзжзжзж`зšзšз'жNжззжзšз`зˆжˆжџеХеˆжз`зšззжзжзжАж9зšз`зJи#изжз9з`зСзќзСзJи#и9з`зАж`зšз`зќз…и`з`з`зˆжСзќзСз…и`з`з`з9зз`зJи#иšзšзСзšз`з`зззšзСзСзšз9зз9ззСзšз`зСз9з`зќзќзќзJи…иJиќзќзќз#иСз#иЌи…иЌи…иJиJиќзќз…иJи#и…иќз`зќз#и#и…и…и#иќзСзСзќз#иЌийJиšз9з`з…иJиЌиJиСзќзСз`з`зšзšз#иJи#иСзšз`зСзšзšзСзќз#иќзšзСзСзšзСзќз#иJиќзСзСзСзќзJи#и#иќз9зСз`з`зќзќзСзšз`ззжзжзжз9з`з`з9ззжАжАжзжз9з9ззАж'ж'жNжNжзжАжNжNж'жžеžеžеžе'жџеХеcе<екдееžеcеcеcеГдГдQдQдкд<екдкдГд*д*дяг*дГдŒд*д*дШгfг?гнвfгягШгЁгЁгнвЖвЖв{вг?гЖвнвЖв{в{в-в{внв{в{вЖвђбЫбTвнвЖвЖвЖв{вTвђбђбђб-в{в{внв{вЫбЫбЫбЫбTвЖв{внвTвђбTвђбђбЖв{в{в{вЫбЄбђб-в{вЖв{в{вђбЫбЫбЫбђбTв{в{вTвђбђбЄбђб{вЖв{вTвђбЄбЫбЫб-вЖв{в{вTвђбђбЫб-вTвTв{в{в-в-вTвTвTвнвгнвЖвTв-вЖв{вЖв{в{вЖвTв{в-вTвTвЖвнвЖв{в-вђб-в-внвгнвЖвнв{в{в{в{внвгЖвнв-вђбTвђб{внв{в{в{в-вђб-в{вЖвЖв{вTвђбЫбђбЫбTвЖвг{вTв-вTв{в-в{в{в-в-в{вђбЫб-вђб{в{в{в-вiбђбЫбЄб-вЖв{вTв-вЄбЫбiбђб{в{в{в-вTвTвTвTв-в-вTв-вTв-вTвTвTвЖвЖвЖв{вTвTвTвЖв?г{вЖвTвTв-в?гЁгfг*д*д*дШгЁгЁгЁгЁг*дQдяг*дШгfгЁгШгЁгQдQдягQдягяг*дШгШгQдQдягягШгШгQдQдŒдŒдQдкдŒдQдŒд*дŒдГдкдГдŒдГдГдкдеžеžеее<еее<ееХеžеХеџеcеcеžе'ж'ж'жџе'жХеХеХеџе'жџеџеNж'ж'жџеџеˆжˆжАж'жNжˆжџеNжˆжˆжАжАжАжАжNж'жзжзжзззАжАжзжАжАж9з`з`зАжџе'жџе`з9зšз9зˆжАжˆж'жХе'жNжˆжАжАжАж'жˆжˆж'жАжАжˆжNжˆжџеџе'ж'жАжˆжˆжˆжNжХеџеџеџе'жNжˆжNжџе'жNжˆжАжАжˆжNжNжˆжNжNжзжзжзжзжзжˆжNжАжзжзззжзжАжˆжˆжNжNжзжАжзжˆжџе'жџеХеNжАж'ж'жџеcеХеХеžе'ж'жХеџеcеcеџеХе'жџеџеХеекдеееееееГдŒдQдГдкдкдГдГдQд*дQд*дQдŒдQд*дQдШгЁгШгЁг*д*дШгягШгягШгШг?гfгfгfгЁг?ггг?гfгШгЁгШгfг?гЁгfгШг*дQд*дягШгШгŒдкде<еŒд*дQде<ее<еžеее<еееcе<ееžеcеџеџеcеžеžеџеNжNжNжˆж'жХеџеNжАжАжззжˆжАжзжзжзжзж`зСзСзšзšзСзСз#и…и…и…иJиJиЌиЌий—йљйљй кљйљй‚к‚к‚какакїкYлїкл€лЇлЇл м0м’мЭм’м’м’мємннVнЄн}нЄнпнAоЪоЪооёоёоAоhоЪоSпzпzпzпSпSпzпЁпSп>р>рррЁпррмпрeр>рмпŒр>рмпррeрeрŒрЧрŒрeррŒрЧрюрюр>рŒрЧрЧрЧрeрЧрюрссŒр>рЧрŒрŒрЧрŒрЧрсЧрЧрЧрeрŒрюрсŒрeрeрр>рeрЧрюрЧрюрeрeрeрŒрссЧрюрŒрŒрŒр>рŒрeрЧрŒрЧрeрмпр>рŒрЧрŒрeррЁпмпр>рŒрŒрЁпмпЁпSпzпzпЁпрSпSпzппппSпzпЁпSпSппЪоппSпzпzпSпёооЪоЪоЪоSпzпSпппоЪоёоёоSпzпzппAооЪоЪоёоппЪооhооhоhооhоhоооЄноAоAоhопнAоопнhоhооAооAоVннЭмєм’м’мkмЭмЭм’м’мkмkм’мkм0м м мYлїкYл€лЇлYлYл€ллїкЉкЉкл€л€л€лЇлллYлYл м0м м м м м мkм’мЭмVнVнVннємVнн}нннЄнVнємннVнн}нпнпн}н}нЄнЭмнЄнопнЄнакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакак€лак к‚кGкЉк€ллYлYл‚к‚кЉкЉкїк€л€лЇлїкљйGкGк‚к€л€лYлYлакGк‚к‚как€лYл€лїк к‚к‚кЉкYлYлYллGк к к кЉкYлл€лїкљйЉкЉк кїк€лїкЇл‚кОйGкGкЉк€лYлллGкGкЉк‚кYлЇлYл€лЉк‚кЉк кЉкYлл€лYл кљйGкGклYлїк€лЉкОй‚кљй‚кYлакїкакОйљйGкGкїкЇл€л€лЉк кGк кGкYлїк€лЇлGкGк‚как€л€лYлYлак к‚кGкЉктл€лїклGк‚к‚к кїкЇллYллЉкїкGкЉкЇлYлYлтлак‚как‚кїктл€л€лYлЉкак‚кЉкЇлЇлЇл€лЉкGкЉкGкЉк€лYлYлїкGкGкGкЉклЇлYл€лЉк‚клакактл€л€ллGкакЉкак€лЇлЇлYлЉк‚кЉк‚как€л€лтлYлGк‚кЉкGкакYллл‚к кGкGкакYлїкїкїк к кGк‚кYлЇлYл€лЉкGк‚кGкакЇл€ллл‚к‚к‚кGкїк€л€л€лакљй‚к кЉкЇлЇлтлЇл‚кЉкак‚кл мYлYлакGк‚кЉкакYлYллYл‚кGк‚к кїкЇллYлак кGк к клїкл€л‚кGкЉкGкїк€лл€лЉкљйGк—й кYллакYлGкGкЉк каклаклїк к кљй кYлїкл€лGк к‚кGкак€лл€ллGк‚к‚к‚к€лЇлYл€лїк‚к‚к‚кЉк€л€лYлYлЉкGкGк‚к€лтлYллакGкЉк‚кактлYлЇлYлGкGк‚к кїкЇл€лЇлЉкљй‚кGкGклYлYлYлGкGкакЉкYлтл€лЇлакљйЉк‚к‚к€л€лЇлл‚как‚кЉкYлтл€л€лYлЉкїкЉкїк мЇл€лЇл‚кGкак‚кїкЇл€лтлYлЉкл‚кЉктлЇл€л€л‚кGкЉкЉклтл€лтллGк‚к‚к‚кЇлЇлЇлЇлїкЉкак‚кЉкЇлYл€лл‚кЉкЉкЉкYлYлYлЇлЉк как‚какЇлїклYл к‚кGкGкл€л€лтлЉкОйЉкGк‚кЇлYл€лїк‚кЉк‚к какYлїкYлGк какGкактлтл€лYл‚к‚кGкGкYлтл€лЇлїкGк‚к‚к‚кЇлЇлYл€л‚к‚кЉк кїк€лYлтлак к‚к‚кЉкЇл€л€лЇлак‚к‚к‚кїк€лYлтлїк кGк кЉкл€л€лYл‚кљйак‚какЇл€л€ллGкGкGк‚к€л€л€л€л‚к к‚к‚кїклїклЉк—йљйGкљйїкїкакл‚к‚кGкОйGкYлїкYлак к‚к к кїклл€л‚кљй‚кљйЉк€лаклак к‚кGк‚кїкYллYлакљйGкљйGк€лYллакОйљй к—йїк€лЉкYл‚кљйак к‚кYллїкакљйљй к кїк€лїкл‚к к‚кGк‚кYлYллїкљйОй к к‚кїкакїкGк—йGк кGкїкїклYлGкљйGкљйаклакYлїк к‚кGкGкїкакїкл‚кљйљйљйЉк€лїклЉкљйGк кљйYлYлЉклGк—йGкGк‚кYллїкїк к к к кллYлЇлЉк кGк‚как€лYллїк к‚к‚к‚клYлїк€лЉкGк‚кGклЇллYллЉкЉкЉкак€л€лл€лЉк кGкљйGкYллїкїк кGкGкљйаклакл‚кљй кОйОйакЉкЉкакОйљй к—й‚клакYлGкљйGкљйGклак‚какОйљй кGкакYллYлЉкљй кљй‚кллїклGкљйGкGкак€лYлYлак кGкGкGклYлYлЇл‚к к‚к‚кїктлYлЇллљй‚к кGклYл€ллGк кЉк‚кїк€лаклЉк кЉкGк кYл€лл€лGкљйGк какYлллакGк кGкGкїкYлїкYл‚к кGк как€лаклакGкак‚к кYл€лYлЇл‚кОйGкОй‚клYллїк кGкGк какллYлGк—йGк кGкYлYлYлYлGкGк‚к кїк€лїкYлЉкОйGкљйGклїклак кGк‚к‚кїкїкакYлакљй‚кЉк‚кYллїклљйљй кљйGклаклакљйGкОйљйїкїкїкYл—й5йОйpйGкїкЉклЉкљйGкљй клЉкGкїкОй—йGкОйGкїкЉкїкЉкљй‚к‚кGкл€лл€лЉкљй к к‚к€лYлYлYлљйGкGкљйаклакїкЉк кGкљй‚кYлакллGк к к‚кїкYллYлїкљй‚кGк‚кYлїклл кОй кљйЉкYлїк€лакљй‚к к‚к€л€ллYлGк к‚кGкакYллЇлакОйGкЉкGкYлYлїкл кљйGк‚кїкЇлїкллGк‚к‚к‚к€лYлїк€л‚кљйGк как€лYлYлл кЉкљйGкYлYлїкл‚к к‚кGкїк€лYлтлл‚кGкљй кл€ллл‚к к кљйакYлакллGк‚к‚к‚кYлYллYл‚к к‚кGкл0м€лYлYл‚какак‚клЇлYлYлЉкGк‚к‚какYл€лЇлл кGк‚к кїк€лїктлїкGкЉкGкїкЇлїк€л€лGк‚к‚к кЉкл€лЇллGкЉкЉкGк€лЇл€л€л‚кGкЉкЉкYл€лYлтлакGкЉкGкGкYлїкїклGкљйљй какYлаклакљй кљй кїкїк‚кїк кљй к кЉкYлїкYлїк к‚к‚кОйлYлл€лGкGк‚к какЇлїкYллGк‚к кGклYлYл€л‚к кGк к‚к€лїкYлYл кЉк‚к‚к€л€лYл€лЉкGкакЉкЉкЇлYл€лл кљйљй клYлаклGкОй‚кОйљйакллак к кљйљйак€лакїкЉк кGк к‚кЇлллYлGкGкGкОйЉк€лїкїкЉкОй к‚кЉкYлYлллGк‚к‚к каклаклакОйљйљйGкллаклGк кЉк клYлак€ллљйЉкљй кYллїкл кљй‚кОй‚кYлYллак кљй к кYл€лїкл кљй к к‚кYлакакакОй кљйGкYл€л€лYлЉкGкЉкGкак€ллYлак кGк к кллїк€л‚к кGк к‚кїкакїкЉкљй—й к‚кYл€лл€лЉк кGк к‚кYлYлYлYлGк к‚к какЇлYл€лЉк кЉк к‚к€лYлYлYл‚кљй‚к‚кїкЇлїклак кGк к клYлл€л‚кљй кљйїкЇл€л€лYл‚кЉкGкак м€лYлYл‚кљй кGк‚кЇллїкїкљйGкGк кїкллYл‚к к‚к‚кїк€л€л€лїк кљй‚кGклЇлакYлак кGкGк‚кллYлл‚к к к кїк€лллак‚к‚кљй‚кЇлїкакїк—йОй к кїкYллЇлїк к‚кGк‚к€ллїкл кGкGкљйакїкл€лЉк к‚к кGкYлїкїкїкGкGкЉкљйЉк€лїкYлакGкЉкGкGкїкїкллGкљй‚кGкїкYллЇлак к‚к к‚к€лллYлљйљй кљй‚клїкїкЉк кGкљйљйїкЇлYл€лЉкGк‚кGклЇлїкїкакОйGк кљйYлYлакїкЉк кGкGкGк€лїклїк к кGкGкаклакYл‚кљй‚кGк‚кYлїклїкљйGкGкGкYлЇлїклЉкGк‚кGкЉкYлYлїкЉкљй кGкGкЉкїкакїкЉкљй‚к кЉк€лллїк‚к кGк какYлак€лакљйGкGкGкїклЉкак—йљй‚кљйак€лїкл‚кОйGк к кллллGк‚кЉкљйїкЇлл€лїкљйGкљйGкYл€ллл‚кљйЉкGкЉклл€лїк‚какЉкЉк€л€л€л€л‚кGкЉкљй‚кЇлїкYл€лGкGк к кYл€ллYлЉк‚к‚к как€ллYлїкGк к‚кЉк€л0м€лYлЉк‚к‚кGк‚к€ллл€лGк‚к‚к клЇл€лтлїк‚какЉкакЇлЇлЇлYл‚кGкЉк‚кYлЇлїкYлЉкљйGк кЉклЉкакакљйљй‚к какYлаклїкОй кОйGкллYлл кљйGкОй‚ктлл€лак кGк к‚клїкакл‚кљй‚к кЉкЇл€лYлЉкљйGкЉкGкл€лYллGк‚кЉк какЇлYлYлYлGк‚кGкGкYлYллЇлЉк к‚кЉкактл€лYлYлGк‚кЉкGкїкYлЉкїк‚кљйGк‚кл€лїклакОйљйGк‚к€лЇллYлак‚к‚к к‚клллїк к к к какYлїкYлЉкљйGк‚кGкYлYллYлGк к‚к кїкЇлYлYлЉк к‚к кGк€л€ллYл‚кЉк‚к кл€ллYлїк кGк кОйїкYллYлGкОй кљй‚клакїкЉкљйGкGк кїкїкЉкїк кОй к—й‚клаклак‚к кљй кїклїкл‚кGкЉк кЉкЇлYлYлл кGк‚к‚кл€л€л€лЉкGкЉкGкакYлїклїк кGк‚к кїк€лїк€л‚кОй‚к к‚кYлїклл‚к‚к‚кGкл€лYл€лакGкакЉкактлYл€лYлGк‚кGкGкакYлYл€лїкGк‚кGкЉкЇл€л€лЇлGкGкЉк‚клЇлл€лїкЉкїкЉкактлтлтл€л‚каклЉкYлтлл€лїк‚как‚какЇл€лЇлтлЉк‚кЉкGкїк мYлYлакОйак‚к‚кЇл€лYлЇлакGк‚кљй‚кYлл€лYлЉкЉкЉкЉк€л€лYл€лЉк кGкGк‚кYллакак к кGкОйїк€лак€лЉк‚кGк кїкЇллYлл кGкGк‚как€лїк€лл к‚кљй‚кЇлллл к кGк кїкYллїкGкљй‚кљйGкYлїкїкYлGкЉкЉкљйакYлл€лакGкЉк‚к‚кYллїкл‚кGкак‚кл мYлYлїкљй кОйљйллакїк кљйGкОйак€ллYлак кGкGкЉк€л€лїкYл‚к к‚к кЉк€ллїкакљй кGк кYлYлакл‚к кGкGкЉклакїкакљйљй к какїкакл кОйљйОйGкїкл€лакљй кGкGклYлллїкЉк‚к к‚кYлїкЉкїкљйљй кљйїк€лллЉкљйGк—йљйлл€лYлGкGкGк кїкYллYлЉкљйGк кљйYллакїкОйљй к—йЉклакYлакОй к к клллYл‚к‚к‚к как€лакїкїк к‚кGк‚кYллїкїкGк к‚к кЉк€ллYлїкGк кљйљйлYлл€л‚кGк‚кGк‚к€лYллїкGк‚кЉк‚к€лЇлYл€лЉк‚кЉк как€ллYлїкОйОй—й кїкYлїкYл‚кОйGкОй‚кYлЉкїклљй к к‚кллЉклЉкљй‚кОй кїкакакак кОйGкљй‚кYлакїкGкОй кОйGклїкїкл кљй к к‚кYлакакЉкОйљйљйGкакїкїкакљйљйљйљйЉкYлYллак к‚к‚к‚к€л€лYлЇлЉкGкак‚кїк€лYл€лYлGк кGкЉкYлYлYлYл кљй‚к‚кЉкЇллЇлл кGк—йGклїкїклGкОй к кЉк€лїкYлYлGк кGк кїкYллYлЉк кЉкЉкакЇлYллYлGк‚к‚кGклYлл€лакGкЉк‚кЉкЇллллGкGк‚к‚клЇлл€лЉк кGк кGкллакїк к кGк каклл€лЉкОй‚к‚какYллакїкGкGк‚к кл€лакYлакGк‚к к‚к€лYллЇл‚к‚как кїкYлYлYлїк‚какЉк кYлЇлYлЇлакGкакЉкїкЇлYлЇллGкЉкЉкїкYл€ллЇлакљйЉкGк‚к€ллЇллGкЉк‚кЉк€лYлYлтлїкGкЉк‚какЇлакYлYл‚как‚к‚кYлYлЉкYлЉкљйGк к‚к€ллYлїкGкGкGкGкЉк€ллYлакGкЉк‚как€лYлллљйљй к каклїкYлїкGк‚к кGкYлїклїкGк‚кЉкGкїк€лаклЉк к кGкЉкYлЇлллGк кGкљй‚кЇллYлїк кGк‚к‚кїкYлїкїкљйОй‚к кЉк€л€лтлYлљй к‚кGк€лYлїкYлЉкGк‚к‚кїкЇлл€лYлљйGк кGклллл‚к к‚кGкак€лл€ллОй кGкGкл€лїк€лакљй‚кљйGкYлYл€лїкGк‚кGкGкл€лYллЉк к кОй‚клYл€лYлGк к‚кGкYлтлл€лїкGкGкGкЉкYлYлЇлЇлЉкGкGкЉкак€лїклак кGкGкGклYлїк€л‚к кљйљйЉкYлYлл‚кОйОйОй клакЉкїкљйљй кОй‚кїк‚какЉкpйљйљй кЉкакЉкЉкљйОй кљй какЉкакЉк—йОйОйОй‚кїкакак кpйpйОй‚кїкЉкакЉкpй—йљйљй‚кїкїкїкGкОйљйОйљйакЉкЉкЉкОйОйpй—йїкллл кОй к‚к‚кYллїкїкљйљйGкљйЉкYлакYлЉк к‚кљйGк€лYлїклGкGкGкљйЉк€лл€лїк к‚кGкGкл€л€лЇлGкGкGкОйакYлл€лак к‚к‚кЉклYл€л€л‚кљй‚к‚кYлтлYл€лїкљйGкGкGкллїкYл‚кљй‚к к‚клаклакљйљй к‚кYлїкYлYлGкGк кљйЉкYлYлїклGк‚к‚к‚к€л€ллЇлакљй‚к кЉк€лїклл кGкGкљйаклл€лакОй‚кЉкЉктлЇлYлYлGкGк‚кGкїкллYлЉк кGкљйGклїкїклОйљйGк—йакYллл‚кљй‚кљйЉктллYлYл‚кЉк‚к как€ллYлїкљй‚кЉкак€л€лYллЉкGк‚кЉкак мтлтллЉкак‚как€лтлтлтлакЉкЉк‚кїкЇлЇл€лак‚какЉкЉкYлЇллл‚кGк‚кGкЉкЇлїкYлYл кGк к кл€лYлYлЉкGкЉк‚как€лYл€лYлGкGкЉкGкYлЇл€лЇлїкGкЉк кЉк€лYл€лл к к‚кGкїкYлYлYлЉкGк‚кGк‚клYлYллGк к‚кGкїк€ллЇлакљйЉк‚к‚кЇллYлЇлїкак‚кЉклYлYл€лак‚какЉкактлтл€л€лGкакакGкїклл€лакGкЉкGк‚к€л€лYлЇлак‚кїкЉкїктлYлЇлїк кЉкЉк‚к€лЇл€л€л‚к‚кGк‚клтл€лтлл кЉкЉкак€лЇлЇл млїкїкЉкл мтл мтлЉкакїкЉк€лЇл€лтлЉк кЉкGк‚к€лYллїк кЉк‚к кYл€лYлЇлїк‚кїкGкакЇл€лЇл€лїк‚кЉкаклЇлYл€лїкЉкЉкGкЉкYлЇлYл€л‚кGкЉкGклЇлYлЇллGкак‚кЉкЇл€лЇлЇлЉкЉкЉк‚кїк€лYл€ллGкЉк‚кЉк€ллYл€лGк кЉкGкЉк€лїклл к‚к к‚кЇлYлЇлтлл‚какЉкїкЇлYлтл€лЉкак‚к‚кЇл€ллЇллGкЉкЉкїктлЇл€лїкGкЉк‚к‚кYлтл€лYлЉк‚как‚кактлYл€лЇлGкЉкакак€лтл€лтлїк как‚какЇл€лЇлYл‚кЉкЉкGклYлYлЇлїк‚кЉк‚как€л€лYлYл‚к‚как‚кYлтл€лЇлїк к‚кGк‚кYлYлYлїкGк к кGкїк€лYлЇлїк‚какGкЉкYл€лЇллЉк‚кЉк‚клЇлYл€лїк‚кЉкЉк‚кЇлтлYлYл‚к‚кЉк‚кїк мYллл к‚кGк‚кYл€лYлЇлЉк к‚кGкакЇлл€ллGкЉкакак€лYллYлGкОйЉкGкЉк€лїкїклGкGк‚кљйїкYлїкїкGк кљй к‚клллл кGк‚к кїкYллYлЉк к‚к к какЉкакїкљйGкGк кїк€ллYлакGк‚кGкЉкЇлYллYл‚к кЉкЉкYлтлїклл‚к‚кGк‚к€лллYлGк к к кЉкYлл€лїк кGк к‚клллYл‚кGкЉкGкїктл€л€лїк‚какакЉкYлЇлYл€лЉк‚кЉк‚кактлYлЇлЇлGкакїк‚к€лЇл€лтлїкGк‚к кЉк€лYлллљй к‚к кл€лїк€лЉкGк‚к‚кїкЇл€лЇлЇл‚кЉкакGклЇл€лтлакGкакЉклYлYлYлYл‚к кGкGклYлїкYлЉкGкакGкЉк€л€ллїк к‚кGк клЇлл€лак к‚к к‚к€лYллYл‚кGк‚к‚кїкЇлл€лїк кїкакЉк€лYл€л€лGкGкак какЇлYл€лїкЉкЉк‚к‚к€л€лYлтлGкљй‚кGкакЇлYл€ллGк‚какакЇлтл€лтлак‚кЉк‚какЇлYл€л€лGк‚кЉк к€л мYл€л‚кљй‚кGкакЇлYл€лїк к кGкGкЉк€лакYлЉк кGкљйЉк€лYлYлYлGкЉкак‚кл€лYл€лЉкGкак‚кЉк€лтлYл€лак‚кЉкGкYл млтлїкGкак‚к‚к€л€лYл€лGк‚кЉк‚клтл€лтлYл‚к‚кGк‚к€л€лYл€л‚к кGк‚кїк€лYл€лїк к‚кЉк‚кYл€лл€л‚к кЉк кїк€лакYлYл‚кGкGк клЇллYлЉк к‚кљйїкЇлYл€ллGк к к‚клїкїкYлЉкљйОйОйЉк€лYлYллGк‚кGкGклтл€л€лїк к‚кGк‚к€лїкакїкGкGк‚к‚клЇлл€лїк к‚к‚к‚кЇллїкїк к к кGкЉкYлїкакЉкљйGк кGк€лїклYлЉкGк к‚клтл€лтлYл‚кЉкGк‚ктлтлЇлЇлакакак‚какЇл€лтлЇлЉкЉк‚к‚кЇлYлл€лЉкGк‚кGкак€ллЇллGк‚к‚кGкїк€лакак кљйGкGкGк€ллл€лGк‚кЉкGкл€лллљйОй кGкїктл€лтлYлGкGк‚кGкYлЇллYлЉк к‚кЉкак€лллл к‚кЉкЉк€лЇллїк‚к кGк кЉкЇл€л€лл кGкGк клЇлYл€лїкGк‚кЉкїктлЇлYл€л‚какак‚клYллтлYлGк‚кGк‚кЇлЇл€лЇлЉкЉкЉкGклЇлл€лл‚кїкGкGк€л€л€л€лЉк к‚кGкїк€ллЇлYл‚кЉк‚к‚кYл€лYлЇлЉкGк‚к кЉк€лYлYлYл‚какЉкЉк€лтлЇлЇлак‚кЉк‚кїктл€л€л€лGкЉкакЉкЇлЇлYлYлак к‚к кGкYлакїкакљй‚к‚к какллYл‚кљй к кЉкїкїк€ллGк кGк как€лїклЉк к‚к кЉкYллллGк кGкљйЉклїклак кGкОй кїкакакїкОй5й кљй‚кїк‚кїкЉкpй—йОй кїкакЉкл‚кљйљйОйЉкYлаклакљй‚кљйОйлYлYлYлGк кGк‚к‚клл€ллљйGк кљйлїкЉкл‚кљйљй—йљйлїкїкакОй кљйљйакYлїкїкGкОйљй—й‚кYлаклакОйљй к кїкїкYлYлЉкGкGк‚кЉкЇлЇл€лЇл‚кљй‚кљйЉкYлллЉкGк‚к кGкYлакїклљй кљйљйїкYлYлтлак к‚к к‚кYлYлYлYл к кЉк какЇлллЉкОйљйљйGклYллїкGкGкЉкЉклYлакYлакљйGкGкGклїкїклGкОйљйОй‚кYлїклакGк‚к к кл€лл€лЉкGкGкљйїктлYл€л€лGкGкGкGклЇллYл‚кОй кљй к€лYлллљй‚к кљйїклїкїк‚к кGк кGкЇл€лїкл к кGкGклYлл€лак к‚к к‚к€лYлYлл‚к‚к‚кGкїк€ллYлїкљй‚к к кїкакYлYлЉк‚кGк кїк€лYл€лЉкљйGкGкЉк€л€ллїк к кОйОйЉклакїкGкљй к к клYлак€л‚кОй к к‚кYлYл€лYл к к к клYлаклЉкGк‚к как€лYлYлЉк к‚к‚к кYлYлїк€лакGк‚к‚кїктлYлYллGкЉкGк‚кїкYллYл‚к кЉкGкЉкYлакїк€л кGкљйљйїклYлЇлїк‚кЉкGк‚к€л€л€лл к‚кЉк‚клYл€лЇлYл‚кGк к‚клакYл€л‚к кЉк‚кїкЇлЇлЇлакљй‚к‚к‚кЇлYлYл€л‚к‚кGкGклЇлїк€ллљй‚к кGкYллYлYлЉк к‚кGкЉкYлл€лїк кЉкак‚к€лтлYлЇлїкGкGкGкакЇлYл€л€л‚к‚кЉкЉкYл€лYлЇлак‚какакл€лYл€ллGкЉкЉк‚к€лЇлYлYлЉкGкGк‚как€л€лYлїкGкGкGкGклYллYлЉк кGк‚к‚кYлїкллGкGк‚кљйїкYлл€лїкGкЉкљйGкллЇл€лЉкGк‚кGклЇлїкЇлл кGкGкЉк€лYлYлЇлЉк‚кЉкGкакЇлYл€лїкОйЉк‚к‚кЇлЇл€лYлGк кЉк‚кїк€лїкYллљй к кОйлїкЉклGкОй к какYлллакОй кGк клYлїкYлЉкGк к кЉкЇлЇл€лЇл‚к‚к‚кGкл€ллYлак к‚к кЉкЇлїклїк‚к к к кYлтлYлYлЉкGк‚к кЉкYллїкYлGк‚как кYлтл€лтлЉк‚кЉкаклЇл€лYлЇл‚кGкЉк‚кїкЇлYллЉк кGкGкЉк€л€л€л€л‚к к‚кGкак м€л€л€л‚кЉк‚кЉкЇлЇлYлЇлGк кЉк какЇллYлїкGк к‚к‚кYлYлл€л‚кљй к какЇллYлак кGкGк клYлїкл кОй кљйGкYлаклакОй кљй какакакїк к—йОйљйGкїкїкїкакОйОй—й—йЉклакїкљй—йљйљй‚клїклYлGкљйGкGкакЇлYлYл‚кОй‚к к кYлллYл кОй кљйЉкYлїклЉкОй к кљйїкакїкYлљйљй кљйЉкYлакYлак к‚к к‚кЇл€лїклGк к кљйакYлакїкакљйGк‚кGкїклїклGк к кОйЉкYлаклЉкОй кљйОйакYлакЉкGкљйљйОй‚кYлїкYлїкљйGк кљйакакакїк‚к—йОй—й кїкакїкакљй кGк кїкYлїкл‚к—й к—й кїкЉклак—йpйОйљйЉкїкЉкїк‚кОй к—й кїкаклакОйОйОйљйїкїк‚какGкОй кGкGклїкЉкак‚к кОй кїкYлаклЉк—й кљй кїкїкїкїк к—йљйљйGкYлїкYлакљйGкљй кл€лYлYл‚кљй к—йGкYллYлакGкљйGк как€лакYл‚кљй‚к каклїклак кљй кОйакYлЉкакGк к‚к кGклакїк‚кљй кОйОйакїкакїкGкљй кљй кYллїкїкљйОйGкљйакїкакYл‚к—й к к‚кYлїкYлїк к к‚кОйакYлїкл‚к кGкGк‚клїкакїк кОйљйљйЉклакак‚кљй‚кљй кїкїкїкїкGк к к кЉкЇлаклїкљйGк кGкллїкYлGк‚кGкGкакллЇлїкљйGк‚к‚к€л€лл€лЉкGкGкGкЉклллак кGк к кїкYлїкїк‚кОй к к‚кYлллїкGкGк‚к‚кїклллЉк‚к‚кљйЉк€лїклл‚к кGк‚какЇлїкЇлїк кЉкGкGк€лYлїкакљйљйљй кл€лакїкЉк к‚кGк‚кYлїкїкл‚кGкGк‚клЇлYл€лїкGк к кЉклYл€ллGкGкїк‚клтлл€лакљйGк к‚кYллїкYл‚к‚кЉкљйактлYлYлакљйGкљйGклллYл‚к к‚кGкак€лYл€лYлGк‚кGк кллЉкїкGкљй кљйGкYллYлYлGкGк к—йїкYлакїк‚кОй кљйGк€лYлYлїкљйљйљй кЉклакакGкљй кљй кїклллGк кљй—йакллYлЉкОй к кGкїкїкїк€лЉкGкЉк‚кїк€лїкїкак к к кљйїкїкакл кљйGк‚как€лїклЉкљйGкљй‚кYлїкл€л‚кGкGкљйGкїкллЉкОй кGк каклллGкљйЉкGкакЇл€лYлїкGк кОй какїкїкл‚кљй к кЉкYлїкїкакљй к кОйаклакYлЉкљйљйљйЉкїкакїкЉкљй кGк кїклїкл‚кGкакGкЉкїкаклїкљйљй к какYлїклак к‚кОйGкYлїкїкл кљй‚кGкїк€лYл€лЉкОй к к как€ллїк кљйGк как€ллїкїкОйGк к кYл€л€лл‚к кGкљйЉкYлїклЉкОйGк к клл‚кЉкљйљйљйОйЉкакїк€лїк кљй кљй‚клYлїкGкОйGкљйЉклїкакЉк—йљй‚к кїклїкл‚к кљй к‚кYлакакакОйљйљйОй‚клЉкїкGк—йљйОй клїкїклљйљйљйОй‚какGкїкЉк—йљйљйGкїкїкYлл кљйGкљйаклакYлЉкОй к—йОйїкїкакЉк—й—йљй5й кїкЉкакGкpйОй—йpйЉкЉкGкакљйОй кpй‚к€лїклЉкОй—йpйљйакїкїкл к—йОйОйGкїкакакYл кљй кGкллїкїкGкОй кGкактлллл к‚кGкGкллакл‚кљйљй какYлїклYлGкGкGкGклYллл‚кОй‚к‚кЉкЇлYлллGкљй кљй‚клакYлЉкОй к кGкл€ллЇлЉк кGк какYлл€лїкљй‚к‚кGкїкїклYлљйGк кљй‚кЉкаклЉкљй к—йљйакакЉкакОй—йљйОй‚к€лGкїкїкОй к к клїкЉкїк к—йљйљйGкYлакїкЉкљй к кљйакїкакакљйОйљйpй кїкЉкак‚к—йОйОй—йGкакакл к—йљйљй кїкакїкакОйљйљйОйЉкїкЉкЉкGкљйљй к кїкакЉкак—й—й—й—йGклакл‚кpйљй к кYлакЉкл кљйGкGкїкYлїкїк‚кљйљй к‚кYллYлYлGк кGк кЉкYлїкYлак—йљйљйОйакїкакл к—йОйљйGкакакїкакљйGкGкљйїклакак к—йGкљйGкYллїкЉкљйОйљйљйїклЉкак‚кљй кОй‚кYлакїкЉкљй кљйОйїкїкїкYлЉкGкакGкакЇлллїкљй кGкGкакакЉклGк к‚к к клакакYлљй—й кGкїклакїк‚кОй кљйљйїкїклл‚кGкGкGк‚кллїкак к кGкGкїкїкакл кpйОйОйGклакакЉк к—й—й—й‚кЉкЉклGкОй кGкЉкЇлакїкак кЉк‚кљйлYллYлїкЉк‚к‚каклYлYлл к кGкОйллЉкл‚кљй‚к к‚кYллЉкїкОйљй кОйїкїкакYлGкОй кОйGклїклYлљй кGкљйїк€лакїкGкpйљйОйљйїкакЉкїкОй—й кОйЉкїкаклЉкОйGк кОйлллїкљй к кљйакYлЉкїкЉкОйGкGк‚кллїкїкGк к к кЉкYлл€лїкљйGк к клїкїкYл кGкЉкљйЉк€лаклїк кGкGкGкYл€ллЇлЉкGк‚кGкак€ллYлїкGкЉкЉк‚кYллакл‚кљй кљйЉкЇлл€лл кОйGкGкїклїкЇлЉк кЉк кЉк€ллYлYл кЉкїкЉкїк€ллЇлїкљйЉкљй‚клЉкллљйљйGк как€лїкYлїкљйЉк‚к‚кYлYлYлл кљй‚к кЉклллак‚к‚к‚кЉклYлЇл€лGкљйGк к‚кYлYлYлакљйљйGкљйЉкїкакакGкљй кљйGк€лакакакОйGкљйGкYлYлЉкак‚к кGкGкЉкYлїкYллОйљй кОйлЇлллGкљйGк кGклYлЇлїк кGк кGклYлїкЇлакљйGк кЉкYлллл к к к какYллYлїк к‚кGк‚кYлїкллGк кљй кїкЇллYлакљй‚к‚к кїкїкакл к к‚кGкл€лл€лYл‚кїкакЉк€лЇлYлЇлакакїкакYл мЇлтлYл‚какакЉк€лЇл€л€лакЉкак‚клтлYлЇлл‚к‚к‚кЉк€л€лїкїкGкљйGк кЉк€лл€лл кGкЉкЉкYл€ллЇлїкGкак‚кЉкYлїк€лYл кGкGкGкYл€ллYлЉкGкGкGкЉкЇл€л€ллGк кGк‚кл€лYл€лЉк к‚к‚к‚к€лYлл€л‚к‚кGкGкYл€лїк€лїк к‚кGкЉк€л€л€лYл‚кGкЉк‚кїкЇллYлЉк к‚кљй‚кллїкїк кОйОйpйGк€лїклЉк к‚к кGклллYл‚кљй к как€лYлYлїкљй к‚к кYлYлакYлGкљйGк как€ллYлїкљй кљй кїк€лїк€л‚кОйGкGкЉкЇлYлYллљй‚кGк клЇлїклїк к‚кGкЉкYлллїк к‚к‚кGкYлтллЇлїк‚к‚кGкЉк€л€ллYл‚к кGк‚кYл€лYлYлак к‚кЉкGкїкакЉкїкGкљйљй—йGкїкЉклак к к к кYллїкїк кОйОй кЉкYлакїкЉкОйGк к клакл€лGкљйОйљй‚кYлїклЉкОйGкљйљйїклїкYлGк—й кљйGклакакїкОйGк‚кGкїкїкїкл‚кљй кљй клїкїкЉкОй кљйОйїкїкЉкак к кљй—й кллїкак кљй к кїкYллїкGкљй кGкGкїкакакак кGкљйљйЉклїклЉкGкGк кЉкЇл€лїклGкљйЉк‚кїкYлїк€лїкGкGк к‚кYлїкїкYл к кGкљй‚клаклакОй кљй каклYл€л к—йGкGк‚кїкїкїкакОй кGкGк€ллаклак‚кGк кЉкYлїкакїкљй кGк клЇлYлл‚кGк‚к к‚кYлїкїкYл‚к кЉкGклЇлїк€лGк кGкљйGкYлYллYлљйGкGк какYлакак‚кОйљйљйGкYлїкакакљйGк кОйаклакYлЉкОй кљйGкїкїкакл кљйљйОйЉкYлїкакЉкљйGк к клллYлGк кљй кЉк€лїкYл‚кљйGкљйљйакїкакїк кљйGкљйак€лїкїкЉкОйљй к клYлакл‚к кGкОйGк€лакїкїкљй кљйљйїкїкаклЉк кЉкGк‚к€лллїкљйGкљй каклїкл‚кОйљйљй клакїкл‚к‚к‚кGкл€лїкЇлак к‚к кЉк€лїкYл€л к‚к‚к кЉкллЇлїкЉк‚к‚кЉкYл€ллYлЉк‚кGк как€лYлYлак кGкGк‚клYлїкYл‚кGкакGкактлЇлтлYл‚какЉк‚кYл€ллYлGкGкЉкљйЉкYлYллїкGк‚к‚кљйїкYлYл€лЉк кGкGкЉк€лYлЇлл к к‚к‚клYллЇлак‚к‚к как€лYл€лYлЉк‚кЉкЉкYл мл€лакљй‚к‚кЉкЇлїклYл‚к‚кЉк клYлїк€ллGкЉк к‚к€лYллак к к к кїк€лл€лакGк‚к кGклакЉклGкљйGкљйЉкYлїкYлакОй‚к‚кGкYл€лYлїк кGк кљйаклїклакљй к‚к‚кл€ллїк‚к кGкGкЉкYлллїкGкGкGкGкїклїкл‚к кGк кGк€лакїкакљй кљйљйїкїкЉклGк—йGкљй‚к€лYллYлGкGк‚к кїкYллYлакљйљйGк‚кYллЇл€л‚кЉк‚кGкїк€ллYлак к‚кGкЉкЇл€л€л€лЉк‚как‚клтл€лЇлЉкGкЉк‚кЉкYлYлYлYлЉкGк‚кGкїкЇлYлЇлYлGк‚как‚к€лЇл€лтлЉк‚кЉкљйак€лллакGкЉк‚кGкллїклGкОйљйљйGкїкакїкїкGкGк к‚кYлїклYлGкљй кОй‚кYлЉкїкл к‚к кљйїкYлл€лакGк‚кGкЉкллллGкGк к какїкЉкл‚кљйGкљйGкллакїкљй кЉкGкїклакYлЉк к‚к кGк€лYлакак—йОйљйGкакїкїклЉкОйGкљйGкYлYллїк‚кGк к кЉкYлакїк‚кљй кљйGкл€ллїкGк кљйОйGклїклїкљйGк кGкїкїкаклљйpйGкљйЉк€лїклїк к‚к‚к кл€лїкїк‚кљй к‚кЉкYлїклакGк к кGкїкYлакл‚к кGк кЉкYлїкллGкЉкЉкGкїкЇлл€л‚к—й‚к‚к‚к€лYлYлл кGк к какYлїклЉкљйљйОйGклакаклGк кGкљйЉклакак‚кpйљйљйљйїкакакїк кGкGкљйЉклїклакљйљй кGклYлїкїк кОй кОйЉкЇлллак к кљй кїкїкЉкїк к—й кљй как‚кїк‚к—й к к какїкЉкак кљйљйљй‚клїкак‚к—йљйљйљйЉкЉк‚какОй—йљйОйGкакїкакЉк—йpйљйљйЉкїкакакGкОйОй—йОйїклакакОй—йОйОй‚кїкЉкЉкЉкљй к—йљйїкїкллљйљй кљй‚клїк€лакОй‚кGк кїклїкїк к к к как€ллYлакљйGк к кїклакYл кљйGкљй‚клаклл кGкGкGкїкллл кОй кОйGкакЉклїкОй к кОйакїкакл кОй‚кОй кїкЉкакакОй к‚кGкїкYлаклGк—йљй—йљйаклЉкл кОй кОйаклаклЉкОйљйљйGкїкїклл к к‚к кЉк€лакїкЉкљйљйљйGклїкїкл кљйљй—йGкїкЉкїкЉк—йGкљйОйакакїкїк кОй к к‚какаклак кGкљйGкїкїкакїк кОй кОй‚кїкакакGкОй кљйљйаклакакGкGк‚к кGк€лYлллОйљй кљйаклЉкїкGкpй кљйGкїкаклїк кGк кљйЉклЉкїкGк кGкОйGкїкакїкакОй—йОйОйGкак‚какGкОй‚кљй кYлїкїкїкОйОйGкљй‚кYлакїк‚к—йљйGк кїкакакїкОйОйљйљйЉклїклЉкОй кљй какїкїкїкОйpй—йpй клїкїкїкОйGк к кллаклGкљй кОйЉкYлаклакОйљйљйОйакїкЉкак кљйGк кЉкYлїклакљйљй кљйїкYлїклЉк к кљйGкїкїкїкакОйОй к—йаклЉкакGкОйљй—йGкїкакакЉкљй—йОйОйЉклЉклGкОйОйОйGкїкакїкїкљй к кОй‚клїклЉкОй кљйGклїкакїк кљйљйОй‚как‚как‚к—й кОй—йакїкЉкак кљй кОйїклакакЉкОйљйљйљйїкїкїкїк кGкљй—й кїкакїкЉк кGк‚кGкїкїкакїкљйpйљйОйGкїкїкак‚к к к кОйакак‚кїкљй—й к кGкYллїкакОйљй кљйакYлїклакОйGк кGклллїкGк кЉк кл€лїкїк‚кљйљйОй клллл к к‚кGкїк€лYлЇлакОй‚к к кYлїкїкл‚кљй кљйак€ллїкЉкОй кљйGкYллл€л‚кљйGкљйакЇлYлYлакљйОйGкGкYлYлїк€лЉк к к‚кїк€лYлYлїкљйЉк‚кGк€ллл€л‚к кЉкGкЉк€лYл€лїкGкGк‚кGкїк€лл€лЉкGк‚кGкак€лYллл кљйGк каклакYлGкљйЉкGкак€лакїкак к‚к‚к‚какїкїклЉкGкЉкGк‚кYл€ллYлЉк‚к‚к кЉкYлл€лYлљй к‚кЉкYллїкїк к кGк—й‚кYлакїкЉк—йљй к кїклакїк кОйљйОй‚клаклакОйОйљйљйЉклїкїк к к кљй‚к€лїкллљйљйљй кїклїкл‚к к‚к‚кЉк€лYлYлакGкGк к кїк€лїкYлїк к‚к кЉк€лїкYлїк кGк‚к каклїклЉкОй кGк‚к€лллл кGкGкGклYлїкл‚кОйGк к какллл‚к‚кЉк кїкYлYл€лак кGкGк‚к€л€лакїк‚к к‚к кактллYлЉкљй к к‚кЇлYлїкYлЉк‚к‚кGкїкYлакїкакљй к к кїкакїкїк кљй кGкаклїклакљй кGк клYлїкYлЉк к кљйЉк€лллїк к к к какYлїкїк‚кљйGкљйGкYлYлЇллGкGкGкGклЇллYлЉк к‚кGкGклллл кОй кGкл€лYллакGкGкљйGк€ллїкл к к‚к кЉкЇлллїк кGкGк‚кЇл€лЇл€лGк к к кЉк€лллїк кGкОй клYлїкYлЉк к‚к‚кЉкYл€л€лYл‚к‚к‚кGклYлYлл‚к к кGкїкЇллYлYл к‚к‚кGклЇллYлїк кЉк как€лїк€лїкGк‚к‚к‚кYлYллЇлак кЉкGкак€лл€лл кљй кGкл€лYлYлїк кGкGкGкЇлЇлYллGк‚кGк кїк€лїкYлЉкGкЉк‚кЉктлЇллYлGк кGкGкак€лYл€лїкGкЉкЉкGкYлYллYл‚кGк‚кGкактлYл€л€лGк‚кЉкЉклYлЇлЇлакЉкакЉкїк€лYл€лYл‚к‚кїкак€лЇлYлЇллЉкЉк‚какЇл€лЇлYл кЉк‚кGкл€лл€л‚к к‚кGкЉк€лYлYлїк‚к‚кGк‚кл€л€л€лїк‚как‚кїк€лYл€ллGк кGк‚кл€л€л€лак к‚кGкЉктлYлл€лЉк‚какЉклтл€лYлїк‚к‚кЉкЉк€л€лYл€лGкGкак‚кYлтлллЉкGкЉк‚кїк€л€лYлYлЉкGк‚к‚клтлЇл€лїк‚как‚кЉкYллYлтлїк какЉкакЇл€лЇлїкљй‚к‚к‚кYлYллЇлGк‚какљйактл€л€ллљй‚кЉкGкл€лл€лїкЉкак‚к‚кYлYлYлл к‚кЉкљйїкЇллЇлакЉкак‚кїкЇлЇлЇл€лакЉкЉк‚клтл€лЇлYлЉклакїктлЇл€лтлЉкЉкїк‚кYл мтлЇлYлЉкакЉкл0мЇл€лтлїк‚какЉкYл0мЇлтл€л‚кїкакакkм мтлЇлїкЉкїк‚кл0м€лЇлтлЉкЉкЉкакЇлЇлїк€лЉк к‚кGклЇл€лYлак‚к‚к‚как€лтл€л€лак‚кЉкакYлтлЇлтлЇлЉкакакGклYл€л€лЉкЉк‚кЉк‚клЇлїк кЉкЉк кGк‚кЇл‚кGкЉкGк‚к‚к кGкGк к к‚к‚к кGк‚кGк‚к‚к‚к кЉк‚к‚какGкакЉк кGк‚к‚кљйїкакљй‚к к кGк‚кЉкЇл‚кљйGкљй‚к‚кGклYл кљй кGк‚к кЉкЇлЉк какЉкљй‚кGкїкYл к к‚какЉк‚к‚к€лGкљй‚кGк кGк кїклОйљйљйљйGк кGкїкакљй к к к кљйYлYлїк‚к кљй к кл€ллл‚кљйGк‚кЉкYл€лїкїкGкGкGкGклYл€ллYл‚к как€ллїкїкллYлїкакїклллYлYлл€лїкїк€ллакYлYлїкYл€л€лллYлYллYл€л€ллїк€лїкYл€лYл€л€лЇлЇллїкљйїктллллYл‚кGкЉкGклYлаклакљйЉк‚к‚кїкYлYл€лакGкЉк‚кЉкЇлЇл€лїкGк‚кGкGкYлЇлYлYлGк кGкGкЉкYлллЉкљй‚к‚кЉклYлYлЇлЉк‚как‚кЉкYлллЉк к‚кGк кїкYлллак к‚кЉкїкЇл€л€л€лЉкGкЉк‚кїк€лYллакљйОйGк‚кYлїкїкл кљйОй—йЉкакакїкїк кGкGкЉкYлакїкл‚кОйОйGкллYллYл‚кљй‚клїкакїкїкакљйљйїк€лYлYллYлЉк к‚клYлЇлYлYл€лGкЉкGкїкYллллGкGкGк‚кЇлYл€л€лакGк‚к какYлл€л€лЉк‚кЉк‚к€лYлїкЇлак к‚кGкїк€ллYллGкGкЉк‚кYл€лл€лїкGкGк к‚кЇл€л€лYл к к‚к‚клЇлYл€лакGкЉкЉкак€лЇлYл€лGк‚как кїкYлаклЉк кGкGкљйакїклYлGк кGк кЉкYлїклакОй к кЉклYлллЉкGкЉк кЉк€лYл€ллљй‚к‚к к€л€лакакGкљй кОйїклаклл‚к кЉк‚кYллл€лїкљй‚к какYлїклYл‚к к‚кGкЇл€ллYлакGкGк каклїкYллљй—й к‚кYллїклл к к кЉкYлллYлGкљйGкљйїкїкїкїкакљйљй к‚клїклїк‚кGкак какллїкїкљйљйљй кYлакїк€лGкОй‚кGкYл€лїкYллљйљйGкGклїкїклGкљй к к‚кїкллЉкОйљй‚к‚клїкїкYлЉк—йGк‚кЉкYлїкYлYлљй кЉк клYлїкл‚к к‚к кЉкYлїклYлGк кGкљйїкїклYлЉкљй‚кGкЉк€лллYл‚кљйљйGклYлїкїкЉкљйGк кЉк€ллїклGкGкGк кїкЇлллYлљйGкGк‚кYлїклYлакGк‚кGклЇлїкYллGк‚кGк‚к€лїкакїкGкљйљй кїк€лллак кGкGк‚кYллллЉкGкЉкGкїкїкїкYлак к к к клYллл‚кОй к кЉк€лллїк кGкGкGклYллл‚к к кљй‚к€ллYллGкGкGкGкакYлїкак‚к кGк к к€лїкїклљй кGк кл€лакYл‚кGкЉкЉк‚к€лЇл€лYлGкGкЉк‚как€лYл€лїкGк‚кЉкЉкYлYл€лЇлак‚как‚кїкЇлYлYлакGк‚к‚кGктлЇлЇл мак‚какак€л мтл0мЇлЉкGкЉкак€лYлYл€лЉкЉкЉкЉклЇлYлYллЉкЉкЉкак€лYллYлак‚кЉкакYлтл€лтл€лЉклїкЉкЇлтл€лЇлYлGкакїкYл мЇлЇлтлїкїкакЉкЇл мЇлтл€л‚кїкїкл м€лЇлтл‚кЉкЉкGк€л€ллЇлїк кЉкGк‚к€л€л€лYлGк‚кЉкGкїкYллYлак к‚кљй‚к€ллYл€лЉк кGк кїкЇлллакљйGкGкGкл€лллGк кЉкGкїк€лYлYлл кЉк к кYлYлYлYл кљй к кїкYлллЉк‚к‚к‚к кїклYлЇл‚к к‚к‚кЉкYл€ллакљй к‚к кїкЇлїк€лЉкљйGк к‚кYлїкYлYлGкGк‚кGкїкYлакїкGкGк‚кGк‚кЇлЇл€лYл‚к‚как‚кїкЇлллGк кїк‚кGкЇл€лYл€лЉк‚кЉк‚какЇлYл€ллљйGк кGкYлїкаклљй к‚к как€лїкYлЉкGкЉкЉкGклYллЇлGкљйGкљйЉк€л€л€лакОй‚к к клїкл€лакGк‚к кGклЉкYлїкљй к кGкїкїкак€лGкљй кОй клїклак—йљй к—йЉкYлЉкїк к—йљйGкGкїклїк‚кОй кGкљйЉк€ллїкGкЉк‚кGк‚кYл€л€л‚к кЉк‚к‚кЉкЇлYлїк кGкЉк‚к‚кYлYлYлакЉк‚кGк‚кЉкЇл€лYлGк‚к‚кGк кїкYлїкїкGк‚кGкЉкЉкYл€лЇлак кGкGк кїкYллак кGк кGк‚к€ллYлGкОйљйGк как€лїкакGк к‚к к кYлїкYлЉк—й кЉкGкїкYлYлтлЉк к‚к‚кGкл€ллЉкGкЉкGкОйЉкїкакл к кЉк к‚к€лїкYллОй кЉк каклаклGкОйGкљйGкїкYлYлїк кGкGкGкакллл‚кљй кљйGкїкїкYллGкGк‚кGкїкYллYл‚к кGкGкGкїклYллGкGкGк кGклїклЉк—й кGкGкл€лYл€л‚кGкGк как€лл€ллGкЉкGк кYл€л€лYлGкљй‚кGкљйллїклGкGкGк кїклїклGкљй кGкЉкYлYлYлл кљйGкGклЇлл€лЉкљй‚кљйGк€ллЇлYлGкGкGк‚клтлYл€лїк‚как‚к‚клYлЇл€л к к‚кGкаклїкYлакОй кљйGкїклакакОй—йљйGкЉкїкЉкїкGкљй кОйОйЉкЉкакЉкОйОйGкОйGкак‚какGк—й—й—й—йаклаклљйОй кљйЉклакYлїк к‚к к кїкїкакїк кОй к к‚кYлїкYлїкОйGк к кїкYлл€лЉк кGкљй кїклYлїкљй к к кЉклакYлЉк к‚кљй клЉкЉкакљйОй кОй‚к€лакYлакGк‚к‚к‚к€л€лїкл кљйGкљйак€ллYлак кGкљйGкллїкїк кљй кљй‚кYлЉклакљйљй—йљйїкїкакакљйљйљй каклїклЉкОй к кGкакїкл€лЉк к кОй‚клїкїкЉкљйљй к кїклїкїкЉкGк кОйGклЉкак‚кОйљйљйљйакYлїклакљйљй кGкYлїкакїк кљй кљйакYлїклGкОйGкљй кл€лїкак к кљй к‚клакїк‚кљйGкљйGклїкїкак к кљйљйЉкYлїк€лЉкљйGкОйGкїкЉкЉкак к—йљйОйGклїкак‚кљй кGк‚кїкYллYл кGк‚кљйактлллЉкОйGкGкљйЉклYлYлљйљй‚кљйGк€лYлYллGкљйGкGк‚кллYл‚кGк‚кљй‚кYллїкл к‚кGкљйїклаклGкGкGкљй‚клЉкакЉк к к кОйїк€лакYлЉкОйљй—й клїкYлл к кGкљй‚к€лакакGкљйGкљй клллїк кGкGк кЉкYлакYлїкљйGк кGкллїкїк кљй кљй‚клїклЉк кљйОйОйїкYлакїкљйОйGк—й кїкЉклGкpйОйОйљйакїкЉкЉк кљйљйљй клїкїкЉкОй кОйОйЉкакакЉкОй—йОй—йОйїкакакЉк—йљй кљй‚кл‚кЉкGк—йљй—й клїклЉк—йpй—йОйGкїкЉкїкGк—й—й—йљй‚кЉкЉкакљйОйОйОй‚клак‚к к5йОй к кїкїкЉкЉкљй—йОйОйак€лаклЉкљй кљй кїклїкїкОйОй кљй‚клЉкакGкpй к к—йїкїкЉкїкљйљй кОйGкїкЉкак‚кpй—йљйОйЉкїкїкїк к—йљйGкакYлЉкїк‚к—й кОйОйаклїкл‚кљй кОй какїкїкак кGк кљйЉкЉкЉклљйОй к—йGкїкЉкЉкЉкОй—й—йОйЉкїкЉкїкGкљй кљй клїкїклљйљйОйОй‚клакїкGк5йљй—йОйакїкїкїкљй кGк—йGклYлїк‚кљй кGк кїкїкакїк к кGкОйЉкYлллЉкОйљйљй кллЉкл кљйGк какYлїклїкљй к к кїкЇлYл€лЉкљйGкљйGкYлїклакљй кљй кл€ллл‚кGк‚к кЉкЇлїкллљйљй кGкЉклакл кОй кљйGкаклYлїк к к кљйакYлллЉкGк‚к‚кљйллллGк к‚к как€лїкYлЉкљйGк к клл€л€лљйљй кОйЉкYлїкYлїк к‚кљй кYлїкїклGкGкЉкОй‚кYлакакЉкљй—й—й какїкакїк‚к кGкОй‚кїкїкYлїкљй кGк к€лтлл€лЉкљйGкGклтлYлYлїкGк‚кGкGкїк€лYл€лак‚к‚к кЉк€лYллYл к к‚к кїктллYл‚к кїкGк‚кЇл€ллл‚к кGкGклЇлїк€лакGк‚кљйак€лїкYлYл кОйGкGкакYлЉкїкGк—й кљй кллакїк кОй кљй‚клакакЉкОйљйОйљйллллљй—йљйљй‚кїкїклакљйGк к кYллакїкљй—йљй—йљйлакїкїкљйGкGкљйлYлїкYлЉк кЉкакЉкYлїклл к к к каклїкл к—й кОй‚кYллYлїк—йљй кОйЉкYлакїкЉкљйGкGк‚клYлїкл кОйGкОйЉкYлак€лакОй кљй к€ллїкїк кОйGк к‚к€лYл€лїк кGкљй кYллїк€л к к‚к кЉкYллYлїк к‚кЉк‚к€л€лїкYлGкGкGк кЉкYлїклїкGк‚кGкGклїклїкGк кGкGкGкїкїкакак кGк кљйїклакл‚к кGкGк‚кYлYллYлGк кGк каклїклЉкљйGк кGкYлакакак к кљйљйакїкаклЉкљй кљйGкYлїкакїкОй к кОй‚какакак‚к к кОйGк€ллїкYл‚к к кGкЉклакїкакОй кљй кYл€ллїкGкОй‚к к‚к€ллYлл‚как‚к кл€лллGк к‚кGкїкYлYллакљй к кљйїкїкакYл‚кОй к кЉкYлїкYллљй кGк‚клYлїкYл‚кОйGкОйGкллїк‚кљй к к какYлYлYл‚кљйGк к‚кYлакїкїкљйОйљй кїкYлїкїкGкљй к—й кїкак‚кЉк кGкGк—й‚кYлакYлЉкОй‚кGкљйїкїкакїк кGкЉк кЉк€ллYлак кGк‚к‚кYл€лYл€л‚кGкGкљйЉкYллїкак кљйОй кYлллїк‚кљй кљй‚клїкYлїк кљйљй какїкакакљй—йљйљй‚кЇллллОй—й кGкYлYлакакљй—й кљйGклїклїк‚к‚кGкљйYлЇлїкЇлЉкљй‚к к‚клYлЇлл к к‚кљйЉкл‚кїк‚кОй кљй кллїкYлGкGкGк как€лїк€лак к кОйGкYллл€лGк кGк клЇлл€лїк кGкGк‚кYл€л€лYлGк кGкљйЉк€лYлЇл€л‚кGк‚кGкYлЇл€л€л‚кGкЉк‚кїктлїкYллGкЉкGкљйїкYлYл€лЉкGкЉкЉкЉкЇлллYлGкЉкGкGклYлллїк‚кЉкGкїк м€л€лЇл‚к‚к‚кGклЇлYл€лакGкак‚кЉкЇлYлYлїк к кGкљйак€ллYлакљйGкGкЉк€лYлYл€лакGкGкGкЉклїклЉкљй кGк кїклллGк к к как€лYл€лакОй‚кЉкЉк€лYллЇлакGк‚кGкакYлїкїкЉкљйљйGкGкYл€лїкYлGкОйGкGкакYлїкїк‚кОйљй к клYллл‚кpйpй—йGклаклїкљй кљйљйакїклл‚кљйGк кЉкЇл€ллYлЉкљй кGкїклаклЉкљйGкОй кїкїкак‚к кОйљйОйЉклЉклЉкОй кОй кYлїкакїкGкОйљй каклакакGк—йОй кОйЉклїкYлGкОй к—й кїкакл‚кОйОй—йљйYлYлїк€лGкОйЉк‚кїкЇлЇлЇллGкGк к‚кл€лYлЇлїк‚какЉкакЇл€лЇл€лGк‚кЉкЉк€лЇл€лЇлїкGк‚к‚к‚к€ллYл€л‚кGкЉк‚кл€л€л€лЉкGкGк‚кЉкЇл мтлЇл‚к‚кЉкак€л мЇл мYлGк‚какYл м м€л мЉкGкакGк€л мЇл0мYл‚кїкакїк мтл€лЇлЉк‚как‚кїктлЇлЇлYлЉкїкїкЉкYлYлYлYлакGк‚к кїкЇллЇл€лGкЉк‚к‚кYлYллЇл‚кGк‚к кЉкYлYлYллЉк‚к‚кЉк€л€лYлYлакGкак‚какЇлЇл€лл кGк кGктлYллYл‚кGк‚кљйGкYлаклл‚кGк‚к‚кл€ллтлак кЉкGкакЇл€лYлл к как‚кYлтлYлЇлїкљйЉк‚как€ллїкл‚кљйGк‚клYлYл€лак кЉкGкљй€лYлїкYл кљй к как€лYлYллљйGкGкЉк€лYллYл‚кљйGкљй‚кYллYл‚к—й к к кїкYллл кОй к кGкYлакїкакљй‚кGк‚клYлїклЉк кGк к‚кїкїкYлїк к кЉк‚кYл€лїк€лЉкОй‚к‚к‚кYлYлYлїкGк‚кЉкЉкYлЇлYлYлїк к‚кGкGклїкYлл кGк‚к‚какYлллакљй кGк‚кл€ллYл кGк‚кљйак€лїк€лл кЉк‚к‚кYл€лYл€л‚к‚кЉк кЉк€ллYлїк к‚кGк кїкYлYл€л‚кGкакЉкїкYллYлїкGк‚к‚к кл€лYлYлGкОй‚к как€лїкYлYл кЉкак кYлтлYл€лGкGкакЉкак€ллYлл кЉк‚кGк€лтлYлYлак‚кЉкGкїктл€лтлЇл‚кЉкЉк‚кл€лYл€лакGк‚как‚клYлл€л‚к‚к‚к клЇл€л€лак‚кїкЉкЉкЇлтл€л€лЉк‚какЉкл м€лYлакGк‚к кGктлЇл€лтлЉкGк‚кЉкакЇллYлYлGкGк кGкYллYл€лЉкЉк‚кGклЇллллGк‚к кGкYлллЇлЉкGкGкGкїктллїкїк кGкGкGклтлїкYлGкљйGкGкЉкллYлл кGкЉк‚клЇлїк€лл‚к‚кGкЉкYлллл к к‚к какЇл€л€лЉк к‚кљйGк€ллYл€лGк кGкљйЉкЇлYллЉк к кGк какYлYл€лЉкGкак‚кїкYлїкYлЉк к‚к кGкYллYлЇлЉкGкЉкGкакЇллYллОйGкGк‚кYлтлЇлYлакGкЉкGкак€лYл€лїк‚кGкљй‚кYл€лЇлЇлїк‚кGк‚кїкЇл€лЇлYл кGк‚к‚кЇлЇллЇллGкЉкGкактлYлЇл€л‚кGкЉк‚кYлтлYлЇлак‚кЉк‚к‚ктл€лл€лGк кЉкGкїк€ллYлїк кЉкЉк‚кЇл€лYлл кGкЉкЉкїк€ллYлакљй‚кGкЉкЇлЇлЇлЇлїк‚кЉк‚кїк м€лЇлїк какЉкЉкЇлЇлYлЇлакЉк‚к‚кл€л€л€ллGкЉкЉкЉк€л€лYл€лЉк‚как‚кїк м€лтлЇлGк‚как‚к€лтллЇлїк‚кїкЉклтл€л€лYлЉкЉкЉкЉк€лЇллYлїкGкакЉкїкЇлYлЇлЇлакакак‚к€л€л€л мл‚к‚к‚кЉкЇлYл€лYл‚кЉкЉкЉкЇл0мYл€лYл‚к‚к‚как€лтлтлYлGк к‚к какЇлYлYлїк‚кGкGк‚кYлYллЇлїк‚как‚кактл€лЇлл кїкакЉктлЇл€лЇлак‚как‚кактллYл€лGк‚кGкGк€лЇлYлYлЉк кGк какYлл€ллЉк‚кЉкЉкYлтлл€лїк кЉкGкЉк€ллYлYл кGкЉк‚к€лтлїкл‚кљй‚к‚как€ллїкакљй кGкљйакYллYлЉкљй‚кGкGклYлїкYлЉкљйGк какЇлYл€лл‚как‚кЉк€лYлYл€л‚кGк кGкїкYлл€лакљйGк к кYл€л€лYлGк‚какGкїк€л€л€лл‚к‚кЉк‚кл€лYллGк к‚к к‚кЇлYлЇлл‚к‚к‚кGклYллЇлЉк кGк к‚кYлллїкGкGк‚к‚кїкYлл€лЉк‚кЉк‚какЇлYлYллGкЉк‚к‚клYлYл€лїкGкGкGк‚к€ллїкл‚кGкGк кЉкYлїклакGкакЉкЉкYлYллл кGк‚к‚кл€лYл€лЉкљйЉк‚кGкЇл€л€л€лGк‚кЉкGкїкЇлYл€лYлGкGкљй кїклїкYлGкљй‚к кЉк€ллYллљйGк к кїклїкїкОйљй к—йGкYллїк‚кОй‚к‚кљйїкYлакїкGкОй кљй кYлїкYлYлGк к‚кGкїкYлїк€лак к‚к кGк€лїклл кGкЉк‚кл€лYлтллGкЉк‚какЇлYлллакGк‚кљй‚кЇлакYлїкљйЉкљй к€лYлYл€л‚к к‚к как€лакYлїк к‚кGкGклYлYлYл кљйGк кЉклїкYлакљй‚к‚к‚к€лYллYл к к‚кЉклЇл€л€лЇлGкGк‚к‚клYлYлYлЉкљйGк кЉкYлакїкїкљйљй к кїкYлакїкGк—й кљй‚кYллїкЉк к кљйGкїкYлакYл‚кОйакGк‚кYл€лYлїкGкGк‚кGкаклїкїкЉк кGк к‚к€ллYлYл кGк‚к кл€лYлїк‚к к‚к кљйлїкЉклљйGкЉк какYлїк€лїкљйGк кGк€лїкїк€л‚кGкЉкGклYлїк€лл‚кЉкакGкYл€лYлYл‚кGкGк какЇллYлїк к кЉкGкїкYллYлЉкGк‚к‚какллYлїкGк‚кGк‚к€лтлYлл‚к к‚к к‚к€лYллїк к кGкОйак€лїкїкак кGкGк‚ктлYлYлYл кGкGк кїкYлл€лакљйGк‚кЉк€л€ллYл‚кЉк‚к какYлYл€лакОй кGк‚кЇлЇл€лYл‚кGк‚кGклтлYлтллОйGк кGклїкYл€л‚кGк к кїк€лїкЇл€л‚к‚кЉкGклYлїкл‚кљй‚кGкЉк€лYл€лїк кGк‚кЉкїкYллYлак‚к‚кGкЉкЇлYлYлYл‚к‚к‚к‚к€лЇл€лтлїк‚кЉкЉкїктлЇлYлYл‚кGк‚кGкл€лYлYлЉкGкЉк‚кЉк€лYлYлїк к кGкGкакYлїклак кЉк кGк€ллїкYлGк кGкљйакYллїкЉкљй к кGклїкїкїк кљй‚кЉклЇлYлЇлл кЉкїкїкЇлтлЇлYлЉк‚к‚кљйЉк€лYл€лак к кљйGкїк€лYл€лак кGк‚кїкЇл€л€лYл‚кїкак‚к€л€лYл€лакGкGкЉкаклYлллGкGкакак€л€лYлЇлакљйGкGкGклллYлљйGкЉкGкл€лїк€лак как‚кЉк€л€л€лїк к к‚к‚кїк€ллYлакљйGкGк к€ллїкїкОй к кОйЉк€лл€лакљй‚к‚к‚клЇл€лЇлЉкGк‚кGкЉк€лYлYлїк‚к‚к кЉкYлYл€лYл к к кGкакЇлYлYллGк‚к‚кЉк€лYллYлGкGкGкљйЉкYлїклїкљй к‚к каклл€лакGк‚к к‚к€л€ллл‚к‚к‚кGкYлтлYлYлакGкакGкЉк€л€лYлYл‚к‚к‚к кїк€лл€лїкGкЉк кGкYллїкYлGкGкGкGкїкЇлYлYлЉкОйGк к кллл€л‚к‚кЉк‚кл€лїклїкGк‚кGкGк€ллїк€л‚кGкЉкGкЉкYлYллл‚кGк‚к‚кїклл€л‚к к‚кGкїкYлїкїкїкGкGкЉк‚кYллак€лGкљйGкљй‚кYлїклїкљй к кGкYлллYл‚к к кљй‚кYллакЉкОйљйОйљйїклЉкїкЉк к к кGклїкллљйљй к кЉклакYлЉк к кљй‚кїкїклїкGк‚к‚кGкЉкYлYлYлїкGкЉк‚к к€л€л€лYлGкGкGкGкакYлYлYлакљйGк‚к‚к€ллїктлакGк‚кGкЉкYллтл€лGкЉкак‚к€л€лїкЇлїк‚какЉкїкYлл€л€л‚к‚кЉкак€лЇлYлЇлЉкGкЉкGкїкЇлл€лYл к‚к‚к кїкллYлЉк‚к‚к какYлїк€лЇлGк‚какЉклYлїклЉкОйGк кGк€лЇлYлл‚к‚какЉкл€лYлЇлакљйGкљйGк€лYлYлYл‚кGкак‚кїк€лл€ллGкЉкЉкЉк€лYлїкїкGкљй‚к кЉк€лакYлакGк‚к к к€л€лл€л‚к кGк кїкYлллYл‚к‚кGк к€л€лYл€лЉкљйGк к‚к€лYл€лYлGкакЉк кYл€лYл€лЉкGк‚к‚кїкЇл€л€л€л‚к‚какак€лтл€лтллGкЉк‚кЉк€лYлЇл€лGкакак‚клYлЇлтллGк‚к‚к‚ктлYлYл€лGкGк‚кљйл м€л€лїк‚к‚кGкЉк€л€лYл€л‚к‚кЉк‚к€лтлYлЇл€лак‚кGкакЇлЇлYлЇлакЉкакGклтлYлЇлYл кЉк‚кЉк€лЇл€лтлїкGкЉкGкакЇллYлYлGк‚к‚кGк€лЇлYл€лGк к‚кљй‚к€лїкYлл‚к‚к‚к‚кл мЇлЇллGкЉкакЉктлллYл кGк‚кGкYлЇлїкЇлакGкGк к‚кYлл€лл‚к к‚кGкл мїктлїк кGк к‚кYлYл€л€лЉк‚как‚кїкЇлYл€лл кЉкGкGк€лYллЇл‚кљйЉкЉкїкЇлл€лл как‚к‚кYлYлYл€лGкљйЉкGкакYллYлакљй‚кGкGкYл€лYлYл‚кљйGк к‚кЇллYлл кЉкGк‚кл€лYлЇлїкGкЉк‚к‚клYл€лYлЉк‚кGкGкїкYлїкл‚к к‚кљйGкYлакакYлЉкљй‚кGклЇлїк€лакљйGкљйGк€ллYллGк‚кGкОйЉк€лїкYлЉк кGкОйљйїклїкїкОй—йљйљйЉкYлакл‚к—йљйљй кїкїкакїк кОйљйОйЉкл‚кЉкGк5й—й—й—йЉкак‚кЉкљйљйОй—йЉклЉклл кљй‚к кїкYлїкїк кљйGк к‚кЇлYлYллGк к кGклЇллYлGк к‚кљйGкYлакїкакљй к кљйЉкYлїклак кљйОйGкїкакакЉкљйљй к какїкакїк к—йљйљйљйлЉкїкїкљй к кљйак€лакїкЉк к кОй‚к€л€ллїк к кGкОйЉкYлЉкїкакОйљйљй кллаклGкљйGк к‚кYлакїкакљй‚кGкGк€лYлакYл‚кљй‚кGкак€ллїкЉкљй к кљйїкYлллЉк к кљй‚кYлакаклљй кGкљйYлYлак€лЉкљйGкGкак€лYл€лYлGкљйGк кїк€лYл€лакGкЉкGкЉкЇлYлїклGкGкGкGкYлЇллЇлакљйакЉкGкYлYллYл‚кGкGк как€лYл€лакљй кљй клЇл€л€л‚кGк‚кОйGкYлаклЉк—йОй кGкїклїкл кОйGк кGк€лYллїкОй кGкGкYлYлїкYлЉкGкЉкGкЉкЇллїк€л‚кGкак‚кYл€лYллGкОй кљй‚клїкYллљй к кGк€лтллYлакGк‚кGк‚к€лYлїкл кGк кљйакYлакл‚кОй‚кљйGкїкакїклљйОйGкОйЉклїклЉк кGкОйљйїкакїкїкљй—й—йОй‚клакїкЉкОйљйљй кїк€ллYл‚кGк‚к к‚клYлYлїк к к кљйїклакїк к как‚кїкЇлллїк кGк‚кGкYлYлл€л‚кGк‚к к‚кYлаклYлљйGкак‚кYлтлYлтлЉкљйGк какYлYл€ллљйљй‚к какYлакл‚кљй кљйGкYлїклл кGкGкљйїкYллYлЉкљйљй кGкллїкакљйљй кОй‚клЉкїк‚к—йљйљй клїкЉкїкљйОйљйОйЉкл‚кл‚к—йљй—йљйакїк‚кЉк к—йљй кЉк€ллїкакGк к‚кGкїклллGк к‚кљй‚кYлїклакљйљйGк кїклл€л‚к‚к‚к кЉкYлYллYл к‚к‚кGк€ллїкYлЉк к‚к к кYлYлYл€лЉкGк‚к кїк€лакїкЉкGк кGкак€лYллл к‚к‚кGкїкYлїклЉкљйGкОй кYлл€лYл к кGкGкїк€л€л€лак‚как‚кЉкYлYллYлGкGк кGкллYл€ллGкGкGкGкллїклGк к‚кGкїк€лYлYлїкљй‚к‚к‚к€л€лYлЇлак‚кЉк‚кїкЇл€лYлл‚к‚к‚кGкїклакYл‚кGк‚кљйЉкїкакл€лGкљйЉкGклтллЇлл‚кЉк к‚кYллїкYл‚к‚кЉкакYл мЇлYлїк кЉкGкЉк€лYлYл€лЉк‚кЉк кїк€ллЇлакGк‚к к‚клYлїкYл‚к‚какЉклЇл€лтллЉкЉк‚кЉкЇл€лYлтлакGк‚кGкїктл€лтллGкЉкЉкGкл€ллYлЉк кЉк‚кїкYлїк€ллGкЉкакЉк€лтллЇлакЉкЉкGкак€лYлYл€л к‚к‚к кл€ллYлак к‚к‚кактлтлЇлЇл‚к‚к‚кGкїкYлYлYл‚к‚какGкакЇл€л€лYл к кЉк‚какл€л€лїкGкакакїкЇлYллYлЉк‚к‚к кїк€лYлЇлYлЉкЉкакЉктл м€лYлЉк‚кЉкЉклЇлYлЇллљйЉк к‚кЇл€лYлYлЉкGк‚к кЉкYлак€лїк‚кЉк‚к‚к€лЇлЇлтлЉкGкЉкGкакЇлYлYлл‚к‚кGкGк€л€лYл€лак‚кЉкGкактлYлллGк‚к‚к‚клЇлЇл€ллGкЉкЉкакЇлYл€лYлGкGкЉкGкїкЇлYлЇллGк‚к‚кЉкЇлЇл€лЇл‚к‚к‚кGкїкЇлYлYлїкGкакЉкGк€л€лл€л‚кGк‚кGкак€лїкYлл к‚к‚к‚кЇлЇлYлYлЉкGкЉкЉклтлYл€ллGкGк к‚к€лтл€лЇлакGкЉк‚какЇлYл€л€лљйGк‚кGк€лYлYлYлЉк‚к‚к кGкYлЇлЇлYл к‚кЉк‚кYлЇлїк€лїкЉкЉкGкак€лYл€л€л‚к‚какGкYлтлYлЇлїк к‚к‚как м€лYллGк‚кGкGкл€ллYлак кGк к‚к€ллаклGк кЉкGкак€ллYлїкљй кGк‚кYллїк€лGкОйGкљйGклаклїк кЉк кЉкYлYлYл€л‚к к‚кGкYлтлYл€лїк к‚к‚к‚клїкїк€л‚кљй‚кљй‚кYлїкYлїкљй к кљйакYлаклЉкGк‚кGкЉк€ллїкYл кGк‚кGкл€лл€лЉкљй‚к‚какЇлїкллGкGкGк как€ллYллGкЉк‚кЉкЇлYл€л€л‚к‚кЉк‚кїк€ллЇлїкЉкїк‚кЉк€лЇлYлтлак‚кЉк‚кл м€л€лл‚кЉкЉк кл€лїкїк‚кGкGк кїктлYлЇлYлGкак‚кЉк€л€лYллGк как кЉктлYлЇлл к‚кGк кYл€лYл€л‚кљй‚к кЉкЇлYлтлYлGк‚к‚к‚кЇл мтл мїкЉкїк‚кЉкЇл€л€л€л‚кGк‚кЉкYл€л€л€лїк‚к‚кЉкак€л€л€л€л к‚к‚кGкїкYллYлак к‚к‚кGкЇл€лїкYлGкGкGкљйЉк€ллYлЉк—й к к кїкїкЉкакљйОйљйљйакYллїкакљйGкОйОйYлYлакїкGкGк кОйакYллYлакGкЉкљй‚кYллакл кљйљйОй‚кїкакїклGкGкЉк‚кYлЇлYлYлGк—й‚к‚как€лїк€ллљйљйGк кллїкЇлак кGкGк‚клYл€лYл кGкЉк‚кл€лYл€лак кЉкЉкакЇлЇл€л€лGкЉкЉкGклЇлл€ллЉкЉкЉкл м€л€лЇлїк‚кЉк‚клтлYлЇлїк к‚кGкGкYлYл€лЇлакакЉкЉклтл€лЇлYл к‚к‚кЉк€лYлYлYл‚к кЉкGкЉкЇлYлYлYлGк кGк кYл€ллЇлак‚кЉкGкїкЇлYл€лYлGк‚кЉкGкYлЇлYлЇлЉкGк‚кGкЉк€ллYлїкОйGкGкGклїклYлЉкGк‚к к‚к€л€лYллGкGкGк кл€ллYлЉкGк‚к к‚к€ллYлYл‚к‚кЉкЉкл€лYл€лYл‚какЉкЉк€лYлYлYлЉкGкак‚кл м€л мYл‚как‚к‚кYлYллЇллЉкїкЉклтл€лЇлYл‚какакЉкЇл м€лЇлак кЉк‚кїк мЇлЇл€лЉк‚какЉкЇлтл€лтлїкЉкак‚кїктл€лтл€л‚кЉк‚кЉк€лЇллтлакЉкакGкактлтл мЇл‚кЉк‚кGкYлЇллЇлїкGкакЉкїкЇллЇлYлGкGкљй кїкЇлїклЉкљй‚к‚какYлллYлЉкGк‚кGкїкЇлYлYлакљйGк к‚кYл€лїкYл‚к к‚к кЉкЇлYлYлл к‚кGк‚клYлл€лак‚какЉкак€лЇлЇл€лЉкЉк‚какЇл€лЇлтллакак‚кYл м€лтл€лакакак‚к€лтлл€лЉк к‚к какЇл€л€л€лGкЉкак‚кЇл0мЇл мл‚кЉк‚как м€л€л€л‚кЉкЉкЉкYлтл€лЇлл кЉк‚кЉктлЇлтлYл‚кЉкЉкЉк€лтлYлтлYл‚кЉкGкак€лYл€лYлGк к‚кGкїк€лYлYлЉк как‚к клїкїкїкGкљйGкGкЉклакYллљйGк‚кGкYллллGк кGк кїкЇлїкЇлїкGкGк к‚кїкYлїк€лЉк кGк к клЉкакїкљй кЉк‚кYлЇллїк‚кљйGк кЉк€лллїкљй кGкGк€лЇлYл€л‚к кЉк‚кЉк€лллїк к‚кЉкGклЇллЇлак‚кЉк к‚к€л€ллїк‚кGкGк кїкYллтлЉкОйGк кGкYл€лYлYл‚к‚кЉкGкїк€л€л€лїк‚кЉк‚какЇл€лЇл мЉкGклакак€лл€лYлЉкЉкакак€лYллYлGк к к как€лак€лYлGк‚к‚кGклYлїкл‚кGкЉкљй‚клакїкакОйОй к какYлїкїкGк кЉкGкЉкЇлїкїкYл кGк кОйїкYл‚как‚кОй к к клYллїкGкљйОй кїклYлYлакGкакЉкакYллYл€л‚к к‚кGклтл€лЇлл‚к‚кGк‚кЇлЇл€л€лGкGкЉк‚как€лїкїк‚кљйGкљйОйЉкакЉкїкGк кGкGк‚кллакЉк к кљй какакакYлGкљй‚кљйЉкЇлллакљй кGкљйл€лYлЇлак кЉк‚как€ллYллGкЉкЉк‚кл€л€л€лЉкљй‚кGк‚кYллЇлYлGк кGк кЉкїкЉкYл‚кљй к к какллЇлGкљй‚к клїкЉкYлЉкОй к кЉк€л€лYл€л‚к кЉкЉклЇлYл€лїк‚кЉкЉкакЇлтлYлYлGкGк‚к‚кл€лл€ллљй‚к к кллллGкљйGкGкак€л€лЇлYл кGкЉк‚кYл€лл€лЉк к‚кGкЉкYлїк€лЇл‚к‚к‚кGкYл€лYлЇлїк к‚к‚клтл€лYлYл‚кGк‚к‚кл€л€лтлл к‚к‚кЉкYлYллYлЉк‚кGкљйаклїкYлЉк к‚кGк‚к€л€лYллGкЉкЉк‚кїк€лYллЉкљйЉк‚к кїк€лYллGк к‚кљйаклЉк€лЉкОй‚кGкGклїкЉкїк кљй кљйак€лаклакљй кGкGкYлYллл‚кGк‚кGк‚кYллтлYл‚кЉк‚кGкYлЇлЇл€л‚кGкак‚как€лаклак к‚к‚к‚клЇлYлYл‚к к‚кGк‚кYлакакЉк к‚к кљй‚клаклЉкОй кљй‚кYлакїкїкљй кGкљйакЇллYлак кЉк‚к‚кЇлYлYл€лЉкGк‚кљйїкYлїкYлакљйљйљй‚кYлYлїкYл‚к к‚кGклЇлYл€ллGкЉкак клYлакYлЉкљйGкGкакЇлYлYлакGк‚к‚кЉкл€лїкл‚кGк‚кGкЉкYллллљйљй‚к‚кYл€ллYлGкGкїк кЉкЇлYл€лYл к к к клYлл€лЉкGкЉк‚кїкЇллллGкGк кGкл€лYлЇлїк к‚кGкакYлаклYл к—йљй кл€лYлЇлл кЉкљй клYлYллGк кGк кїк€лїкїкак‚к‚к‚какYллїкл‚кGкЉкGкїкЇлїкYлїк к‚кGкЉк€лYлїкYл кљй кGкїк€ллYлл кGк‚кGкллїкл кОй‚кОй кYлїкакЉкљйGкGкGклїкакYлGк кGкљйGкїкакакїкљй к‚к‚кїклаклЉк к‚к кGкЇлYл€л€лGк‚какGкїкYлїклакОйGкљйGкЇлЇлїкак кОйОйљйЉкллYлЉк к‚к‚кЉк€л€л€лтлак кЉкЉкїк мЇл€лїкGкЉк‚кЉк€л€ллЇл‚кGк‚к какЇлYлЇлїк кЉкљй‚кYл€лЇлл‚кОй к к‚кЇлYллYлGкGкЉк‚кл€лYллакGк кGкакЇлYллл кљйакGкїклїкYлGкљйGкОй‚к€лл€лїкљй‚кЉкGклЇлYлYлїкљй кGк‚клYлЇлYл‚кљй кљйак€лЉкЇллљй‚к‚какЇлЇл€л€л‚кGк‚кљйактллYлЉкљйGкGкЉкYл€лYл€л‚кљйGкљйЉкYлллЉкљйGкљйGкYлYлакакGк к кGкЉкЇлїклїкОй кGкGкїкYллYлGк—йGкљйїклл€лЉкОйљй‚к кїкYлллGкљй‚кGкЉкYлллл к кЉкЉкллаклак к‚кGкЉкYлYлїкYлGк‚кЉкОйїк€лїкЇлїкGкЉк‚к‚кYл€лYлл к‚как‚кїкЇлл€лЉкОйљйљй‚кYллакїк кљйGк‚как€лїклакљй‚к‚к‚кYл€ллYл‚к как‚кїкYлїкYлакGкЉк‚к кл€лакл‚к кЉк кЉкYлакїк‚кОйGкљйGкYлYлїк€лЉк какЉкїктлЇлЇлYл‚к‚кЉк‚кYлтлYлЇлїк к‚к‚кЉкYлYлYлYл‚к‚к‚к как€лїклЉкљйGк—й‚к€лYлЇлYлGкОйљйЉкїкЇлYллїкОйGкGкGкYлллїк кGк‚к какYллYлЉк к‚кGк‚кYлїкл€лGкљйGкGкЉкYлїкYллљйGк к кїкїкїкYл‚кљй‚к к‚клїкїкЉкљйGкљй кл€лїклGк—й к—йGклїклак—йОйљй‚кYлYлакYл‚кљй‚к кЉкЇл€лYллGкGк к кїкYлїклак—й к кGк€лїкак‚кљйGкGкGкак€лїкл‚к кЉк кЉкYл€л€лл кGкЉкGкїкYлїкїкЉк к к‚к‚кл€лїкYлGк к‚к кл€лїкYллGк‚к‚к‚кYллYлYл кGк к каклл€лакљйЉк‚к‚клYллл‚к к‚кљйGклїкллљй к к‚клллїкGк—йGкљй клїкїкYл кGкGкљйїкїкЉкїкЉк к‚кЉкЉк€лYлYлYлGкGкGкGкл€лYллак к‚кGк‚кYллакїк кGк‚к кYлтлYлл‚кљйGкGкGкYл€лллGк кGк кїк€лїкYлакљйљйGк‚кл€лакїк к кЉк кЉк€ллYлак кЉк к кYлллYл‚кGкЉкЉкїк€лл€ллОйGкљйGкYлЇллYлЉкљйЉкGкакЇлYл€лїк к‚к‚к‚клЇл€лЇлакGкЉк‚какYлYлYллGкGк‚к кл€лїк€лGкљйGкGкЉкЇлYлл€л к к‚к кїк€лїк€лак кЉк‚к‚к€лЇлYлYл к к‚к‚кїкYлїкYлЉкpйОйpй—йакїкїкїк‚к к кљйак€лаклїкGкGкљйGкїк€лYл€лЉкљй кОйGкллYлїк кGкљйљйакїкїклGкљй‚кљй‚клаклїк к‚к к кл€лYлл‚кОйGк к‚клЉкїкак кGк к кїк€лїк€лакљй к к‚к€лїклл кGкЉк кїкYлллGк к кGк‚кYлYлїкYл‚кGк‚к какЇлл€лакОйЉкЉк‚кЇлтлїкл‚кGкGк кїкЇллYлїк кGк‚кGкакїкїкYл‚к к‚кљйакYллYлакGк кљйGклYлїкYл‚кљйЉк‚кЉк€лЇл€лл к‚кЉкGкYлтл€лYлакGк‚кGкакЇлYлYллљйGк кGкл€ллл‚кљй кљйGкYлакакл кљйGкљйїкYлїкYл‚к кGк к‚к€лл€лYлGкGк‚к как€лYл€лЉк кGк кЉк€лаклYл к к кGкл€лллл кGкGкGкYлїклїк к к кОйGкїкЉкїкЉкљйGкљй кїкYлїкїк‚кОйGкGкак€лаклакљй кGкGклллл к к‚к к‚какаклакОй к к кїклYлYлЉкGкЉкGкЉкЇл€лтлYл к‚к‚к‚кYлЇлакїкЉкљй к к‚кллYлл‚к кЉк кЉкYлїкYлЉкљйGк к‚кYллYлїкGкљй‚кGкакYлYлYлGкљйGкGкЉкЇлYлYлїк кGкGкљйїктллYлак—йљй кљйллїкYл‚кGкGкGкакЇлYлЇлЉк к‚к‚к‚кїкYлїклGкљй‚к кїкЇлYл€ллGк к к кїкЇлYлїк‚кGкЉк‚как€ллYллGкGкЉкGкл€лYлYлакGк‚к‚к‚кЇлYллYлGкGк‚к кл€лл€л‚кљй кОйљй€ллллОй к‚к‚кїк€лїкЇлакљй‚к кGклYллїкGкGкGкљйЉклїклак к‚кљй‚кYлїкакїкGкљй кљй‚клакїк‚кОйGк‚кGкїкYлллGк кGкљйак€лл€лїкОйGкGкљйакакакїк кљй‚кљй‚к€лїк€лл‚к кGк‚кYл€ллYл‚кGкак‚кїкЇллYлл к к к‚кїкYлллЉк кЉкGкЉкYлллЉк кЉк‚кGклїкакїкЉк кGк к‚к€л€лYлїкљйGк‚кGкїкЇлYлїкGкљйљйОйGклїкYл€лGк‚кЉк‚кїкЇлYллЉкGк‚к‚кЉклїклYлGк к‚кGкYлтлїкїк‚к—й к кGкллїкл кGк‚к к‚клїкїкїкљйљй к клYллЇлакGкGк кЉкЇлYлЇл€л кGк‚кGкллакYлљйљйЉкљй к€лYлїкакљй к кљйаклЉклGк—йОйљйGкїкакакїкљйљй кљйаклїкїкЉкљй‚кGк кYл€л€л€лљй к кљйакYлллакљйGк‚к‚клїклYлGк кGк кЉкїкаклакљйОйљйGкїклїкакљйљй кљйЉк€лїкїкЉк к к кGкYлYлїкЉкGк к‚к‚к‚клїкYлак к‚кGкљйаклЉклGкљйљйљй‚клїкїкїкљйљйљйљйїкїкаклакGкGкљй кїкллїкОйGк к клYлїкYл‚кОйGк к‚кYлакїкїк к к к—йЉклЉклЉк—йGкљйљйлїкакакљйљйGкљйGкYлаклЉк—йљйGкЉкїклїкл‚кљй‚к к‚кл‚кїкЉкљйGкGкGкYлYлїк€лЉкљйGкљйїкЇлл€лїкGкGкљй клYлYлYл‚кљй кGкЉкYлїклЉкљй к кGклїкїклGкОй кљй‚кYлл€ллОйљйљйљйЉкакакл‚кљйGкGк‚кїкYлYлїкОйОйGк кїкЇллYл‚кљйЉкGкЉк€л€лYлYлGк кGкОйїкYлїкYлЉкОйGк кGкYлYллYлЉкGк‚кЉкїк€лYлYлл кGк‚кGклYлл€лGкGк‚кОйїкYллЇлакGкGк кGкYл€лYлYлGк к кљйЉк€ллYлакљй‚кGкљйYлYлїкYл‚к кGкљйGкїкЉкакакОйљйљйОйакїкЉкїк кpйОй—й‚как‚кїк‚кpйОйОйpйGкЉкGкGкОй—йОй—йљйакакЉкЉкљй—йљй—йGкїкЉкїкGк5йpйљйљйїкїкЉкакОйОйљй—й‚кл‚к‚к‚к—й к кОйакЉкЉк‚кОй—йљйОйљйїкЉкЉкЉк—йОйОйОйїклЉкакљй—й—й—й‚клЉкїк‚кpйљйОй—йїклЉкЉк кљйGк кGкYлїклїк—йљйљйљйїкїкакYл кљй‚кљй‚к€лакїкакОйљйОйљйаклЉкакGк—йGкљйGклїклакљй—йОй—йЉкїкаклGк—й кљйљйлїкїкїкОйљй кљйакYлакїк‚кpйОй кОйїкїкакакОй к к—й‚кл‚какЉкpй—йљй кїклїкYлљйљйGк какїк‚кЉк‚кОйGкGкGклYлYл€л‚кОйЉк‚к‚к€лаклїкОйљйОй клYлл€л‚к кGкљй‚к€ллллљй кGк кїкYлїкYлGкљй кљй клакЉкакљйљйGк кЉкллл‚кpйОйОй кїкїкїкїкљйОйљйОйак€лЉкїкЉкОйОй—йљйїкЉкакїкGк к кљйаклакїк‚к5й кљйљйїкаклак к к кGкЉкїкакYлЉк—й к кGкллїкл кљй‚кљйЉкїкаклїк‚кGк кОйакYлїкл кОйGкGкаклллакљй к к кїкїкЉкакGк—й кљйGкакакакїкGк к кОйакїкЉкїк к—й к—й—йакЉкаклљйљйљй каклїклGкОйОйpй—йакЉкЉкїкОй кGкљй‚кїкЉкЉкGкОйGк кљйллїкYлGкљй‚к кЉкYлаклЉкљй‚кGк клYлїкїкGкОй к кЉк€лїклак—йљй кОйЉкЉкЉкЉк к кGкGкакYлїклЉкОй к кGкYллїк€лGк—й кљй‚кYлїкYлакОйGк к кЉкїклїк к—й‚кGк кїкЉкакакОй—йљйљй‚какЉк‚кљйОйљй—й кїкїкїкак—йљйGкGкїклакYлакОйGк к клїкаклљйОйљй кЉкакаклGк—й кОйОйаклЉкакљй—й кОйЉклакYлЉкљй к—йљйакакїкїкљйОйОй—й кїкЉкїкЉк—йОйОй—йакЉкЉкл кОйОйpйGкїкакїкакОйљй—й—йЉкакЉкїкљйpйљй—йGклаклак—йљйОй—йакїкЉкїкGкљй‚кОй‚клїкак‚кОйОйљй—йЉкїкакїкGкОй—й5й—йакакакЉкљйОйpй—й к‚кGк‚кљййОй—й—й‚кGкЉкакОй—й—й—йGкїк‚кЉкGк—йОй—йОйїкакЉкакљй—й кљй‚клїкакЉкОйGк кљйїкакакїкОй—й—й—й кЉкакл‚кpйљйљйОйЉкЉкїкїк кpйpйpй—йЉк‚кЉкGк5й—й—йpйаклЉкїкљйљй кљй‚к€лаклYл кљйљйљй‚кїкакїк‚кОйОйОйGкYлїклїкљй к кОйакYлїклGкљйљйљй каклїкїк кљйGкљйак€лїклЉкОйљй—йљйїкЉкаклљй—йОйљйЉклакїкЉк—йљйОйљйїкїкакакљйpйљй кЉклЉкакакОйљй к‚клїкїкїк кљйљйОйЉкїкЉкакак—й кОйpйак‚кЉкл к—й—йpйОйакакЉк‚к—й—йљйОйакл‚кїкљй—йљйљйGкїкїкїкЉкљйљйОйОйакїк‚какљйpй кљй кїк‚какїкОйОйОйpй‚кїкЉкакGкpйОй—йОйакЉкЉкЉк—й—йОй—й‚клакл‚к—йљйОй какїкїкакљй кGкОйЉкYлїкYлЉкОйљйОйљй‚к‚кЉкакљйpйОй—й кїк‚кЉк‚кљй—й к кЉклакїк кpй кљйGкYлаклїкОйљйОйОйGкакЉклљй5йОйpйОйЉк‚к‚кЉк—йОйОйpй‚кЉкGкак к5йОйpйљйїк‚кЉк‚кpй5й—й5й к‚к к‚кОй5йОй—йОйїк‚кЉкакОй—йљйpй кЉкЉкакGк—й—й5й—йакїкЉкїкОй—йљй5йОйак‚к‚к к5й—йpй—йЉкЉк‚кЉкОйpйОйpй кїк‚какGкpй—й—йpйЉкGк к‚к—й5йpйpйљйакGкакакpйpйОйОйїкЉк‚клGкОйљй—й кЉк‚кїкЉкОй—й—йpйGкЉкЉкак кpйљйpйGкл‚кїкакОйљй кљйакYлЉкак кОйљйОйGкїкакїкЉкОйОйљйљй‚кїкаклЉк—йљй к кїкїкакЉкОй кљйОй‚кЉкљй‚к кpйљйpйpйакакЉкакљйљйљйОйЉкїкїкYлак к‚кљйGкYллл€л‚к кGк кЉкYллЇллљй кGкGкллYллGк кGкGкак€лаклїкљй кљй—й‚кїкЉкїк‚кљй к к клЉкакакОй—й кљйЉкїкаклGкОй кљй кїкїкакЉкОй—й кОй‚кл‚какGк—йљй—йGклакїкакљйОй—й—й‚какЉкл‚кОйљй к‚кYлYлїкїкљйљй кљйЉкYлакл‚к—й к—йљйїкїкЉкYлGкОйGк к‚кYлїкакGкОйОй к кЉкїкЉкл кљйGкОйGкакакакЉкpйОйљйОйакїкЉкїк кОй к кЉклЉкакЉк—й—й—й—йїкл‚кл кОй‚кОй‚клїк€лакљйљйОйОйакак‚кЉк к—йОйљйGкYлїклїк кОй к какїкЉкїк‚к—й к кGклллак кљй кљйакYлакїкЉкОйОй к кїклYлYлGк к‚кљйЉк€лаклЉкОйљйљйGкллїкYлGкљй к—й‚клїкак‚к—й—йљйљйЉклїкїк к—йОйОйЉкїкакл‚кОйљйљйљйїкїкїкYл‚кљй‚кGк‚к€лYлYллGкљйGкGкїкYлакYлGкљйGкGк‚клїклїк кљйљй кл€лакїк‚кљй‚к‚кЉкЇлЇл€лYлGкGк‚кGкїкЇлїкYлїкљйGк кGкYл€ллїк кљйGк‚как€лїклак к к к‚какїклYл кGк кОйакYлїклакОйљйљй кYллYлїк к к‚к кЉкYлллакљй кGкGкакакЉкак кОй к—йGклакїкакОйGкGк кллакYл‚кљйЉк‚как€лллїк кGкGкGкл€ллYл‚к—йљйљйакYлYлYллљйОй‚к кїк€лакїк‚кОйљй к‚клYлYллљйљй кGкYл€лYл€л‚кОйGкGкGкллїкїк к кGкОйїкYлїк€лЉк кGкљйљйлїкїкл кОйљйОйGклакїкїкљйљйљй кллакYлЉкGк‚кGкакYллYлакGкGкGкGкллакїк‚к к кљй‚к€лїкЉкакGкGк к кллаклGк кGкљйЉк€лYллїкљй кGкGкїкїкакл‚кљй к кЉктлYлYлYл‚к‚какGклтлYлYлак к‚кGк‚к€л€л€лЇл‚кЉкак кЉкYлл€лЉкљйGк‚к‚клYлїклGкОйљйљйЉклаклїкљй кGк‚клллл‚кGкЉкљйGкYлїклїкGкGк к каклаклGкљй‚к кGкYлакїкак к кGкGклYлYлYл‚кGкGк‚кЉкYллакїк к к к кїк€ллYлЉкОй кОйGкїкл€ллљйGкGкљйлллїк кљйљйљйGкїкллїкGкGкGк кЉкYлїкїкЉкљй‚кљй‚клїкїклGк—йGкљйЉкЇллYлакљй‚к кљйYлакЉклЉкGкGкљй‚клїклакОй к к‚к€л€лакїк кљй‚кљйЉкYлакакакљйљйљйљйакїкїкл‚кљй кОйGкїкЉкЉкЉкОй—йОйОйакакакакљйОйљй—й клаклїкљйGк‚к какYлїкїк‚к к кљйGкїкллл к кGкљйЉклїк€лїкљйGкљй кYлакакїкОй к к кЉк€лллакpй к кGклллл‚кљйОйОйЉклїклGкpйОйОй—йїкYлїкл кљйGкОйЉкYлїкYлїкљйОй кљйїклїклљйљй кОй‚кїкакYлїкљй к кљйїклакYл‚кОйGкљйЉк€л€лYлїкљйGкGкGкїклїкYл‚кОй‚к к кїкакїкак к кGкGкЉкYллYл‚кОй кОй кллакїк кљй‚кљйїк€лїклакОй к к кYлїклл к кљйОй‚кYлакїк‚к—йGкљйљйїкYлїкак кОйљйОй‚кYллїкЉкОй‚кљйљйллїкїк кљйОйОй‚кїкїкїк‚кОй к кљйакїкакїк‚кОйОйОйGклаклак—йОйОйОйїклакЉкљй—йОйљйљйЉкакїкакОйљйОйОйЉкїкїкак к—йОй—йОйїкЉкЉкЉк—йОй—йОйаклїклGк—йОй—йљйїкYлїклљйОйљй—йакYлакїк‚кОйОй‚к‚кїкїкакїкљйОйGкљй‚клїкїк‚кОйљй—й кїклакЉкОй—йљй—йакYлакїк‚к кљйљй каклYлYл‚к кGк к‚кYлїкїкїкОй к‚кЉклYлїкїк кОй кОйљйлаклакОйљй кGкллїкл‚кОйGкљйљйїкїкYлїкљй к кљйакYлїкїкGкОй кљйGкYллЉкїкљй—йОй—й‚кїкїклGкОйљйОйљйїкїкЉк‚кОйОй к—йGкл‚какGкpйОй—й—йЉкЉкакїкОй—йОйОй‚кїкЉклакОйGк кОй‚какакїкљйОйљй—й‚кYлаклЉкљй к кGкїклаклЉк кљйљй‚кллYлакљйGкGк кллїкл‚кљйGкљй‚кYлїклл‚кљйљйОйл€лакYл‚кљйљйљй‚кYлїкакакОйОй к кїкYлїкYлЉк к кљй кYлїкїклљйљй к клллYл‚кљйGкGкљйїкїкакїкљйОйОйОй‚кїкїкYл‚к к кљй‚кллЉкакљйОй‚кљйGкїкїкл‚к к кљй кїкїкЉклљй—йGкљйGкYлїкїкїкGк‚к‚к кїклаклGкљй кљй‚кYлїкакЉкОйљйљйОй‚кЉкаклGк—йљйљй какїкїкакОйљйљйљйаклакїкЉк кGкљй клїкїкїкљйОйљйљйїкYлаклЉк—йОй—йљйїкїкїкакљйОй к кЉкYлакЉк к5й—й—йОйакакїкїк кОйљйОй‚к€лакл‚кОйGкљй кYллаклGкGкGкљйЉкYлїкїкакљйљйљйљйїкакїклGкGк‚кљйЉкYлаклїк кGк к кїклакїкGкОй кGкЉк€лллYлљйљйGкљйЉкїкаклGкОйљйљй кїклїкакОйGкGкОйакїкакїкЉкОй кОйљйакїкїкак—й—йљйОй‚кїкакак к—йОйОйОйлїкЉк‚к—йљйљй—йGкїкЉкїкЉк—й кGкОйїкYлЉкл кљйљй к‚кїкїкїкЉкљйљй кљйїкїкакл кGк кљйїкYлакYлл кGк кљйїкYлїкYлЉк кЉк кЉк€лл€лїк кљйљйОй‚клїкїкЉк к‚к‚кЉк€лїкYлYлGкGкљйљйЉклїкл‚кљйGкљйGклїклак кGкОй—йакїкакл‚кљй к к клїкакYл кљй кОйакYлакїк‚кОйGк к кллїкїкGк к‚к какYллYлакОй‚кGкGклїклл к к кљйаклЉклакОйGкОйОйакакїклGкљйGк кGклїклїкљйљйљй кїклл€л‚кОй к‚какYлїкакак—йОйОй—йїклЉкл кОй‚кОйGклїкїклGк‚к кОйл€лл€лЉк кGкљйЉкYллYлїкGкљйGкGкак€лїклGкљйGкОйGкYлїкїклљй к‚к как€лїклакљй‚кGкGкYлїкїкл кљйGкљйак€лл€лїкОй кљйGкїкїкYлYлGк кGк кЉкYлїк€лїк кGк кОйїкїкакYлGк к‚кОйGкакакїкїк кљйљйљйЉклЉкїкGкpйљй—й к€лЉкїкакОйGк к кYлYлїкїк‚кљй‚кGк какакакакљйљйGкљйЉклЉклЉк—й к к‚к€ллакак кљй‚к какYлак€лїк кЉкGкЉкYлYлїкїкЉк‚к‚к‚кїкЇлYллїк кGкGкGкYл€лYл€лЉкGкЉк как€ллYлїк‚кЉкGк кїк€ллл‚кљйGк кЉклллїкљйљй‚к кллЉкїк—й—йак кGк€лYлYллОй кљй кYллїклGк кGкGкїк€лYлЇллGк‚кЉк‚кYлЇллYлЉк кGкGк‚к€лЇлтл€л‚к‚какGкYлтлYл€лакGкЉк‚кЉкYл€л€л€лЉкЉк‚к‚кYлтл€лЇлл‚к‚к‚кЉкYлЇл€лтлїкакїкЉк€л мЇлЇлYлЉкакЉкЉктл€л€лтлакЉкакЉкYлтлYлЇлїк кЉк‚к‚к€л€ллтлак‚кЉк кїк мYл€лYлGк‚кЉкЉкЇлЇлїк€лак как кGкЇл€лYлїкGк‚кGкGкYлЇлYлYлакGк к кЉк€лYллЇл‚к к‚к каклїклGкљй к к кл€лїкл кОй кљйЉкїкїкYл‚кљйGкљйљйїкакакїкљй—йљй—йGклЉкїк‚кОй кљй какїклYл к к к кїкЇлїклакОйGк кОйлYлакїк кОйљйОй‚к€лллакљйљйљйGкЉкїк‚кїкGк—й кљйGкYлїклл к‚кGк кYл€лїкYлЉк к‚к к‚кїкїкллљй‚кЉк кїкYлYл€л‚к кGк к‚к€лYллїк к к‚к кЉкЇллYлак к‚кGкЉкYллYллGк‚кGкљйак€лаклакGк‚к кЉк€л€лїкл‚кGкЉкGкїкYлакYлакљй‚к‚кЉктлЇллYлЉкЉкакЉкакЇлYлЇл€лакЉк кGкYл€л€л€лак‚кЉкGкЉкYлл€лїк к‚кGк кYл мYл€лїк‚кЉк‚как€л€лYлїкGк‚кЉкGкїк€лллЉкGкGк кGкїкл€лYл кGк‚к кл€лїклак кЉкGкїк€лл€лл к‚к‚кGклYлїк€лакљй‚к‚как€л€ллїкЉкGкЉкаклЇл€ллїк‚кGк‚кGкл€лїкл‚к к‚к‚кїкЇл€лYлїк кGк‚кGк€л€лYлл‚кGкGк клЇлл€ллЉк‚кЉкЉкYлтлЇлтлл‚к‚к‚кактл€лYлл к‚к‚к к€лЇлїк€л‚кGк‚кGкЉкллYлїк к к‚кљйак€лYлYлЉкљй к кGкYлYлYллGк кљйљйл€ллYл‚к к‚кGк кллYл€лGкљйGк какYлїклак кЉкGкGклїкїкл кGкGкЉкл€лак€лл к‚кЉкЉклЇл€лYл‚кGк‚к какЇлл€лл‚кЉкGкGк€лЇл€лЇл‚кGкакЉклтлYл€л€лакакїкЉктл0мтлЇлакGкакакїкЇлл€л€л‚к‚кЉкGкYлтлYлЇлак кЉк‚кактлYл€лYлGкGкGк‚кл€лYл€лїкљй к кGкYлл€лYл к к‚к‚кїкЇл€л€лак кЉкGкакЇл€лYллGк к‚к‚кїктл€л€лакОйGк к к€лYллYл‚к‚кЉкGкл€ллYлак кЉкЉк‚к€л€л€лтлакЉкїк‚кїклллїкGк‚к‚к‚к€л€ллЇлїкGкЉк‚клтлYлЇлYл‚кЉкЉкЉкYлЇлYлтлЉкGкакGкак€лYл€ллљй к кљй‚кїклYлЉкљйљй к кYлYлїкїкGкGкGкљйЉкYлїкYлЉк—й кGк‚к€лYлллљйљй кОйаклакл‚кљй кОй кїкїкїкїкљй к к—йЉкYлаклЉк—йОйОйљйакакаклљйљйЉкљйGкYлллЉкОйљйљйљйЉкакЉкл кpй кОйGклакїкЉкОй к‚к‚кїкYлїкYл‚к к‚к к‚клїкYлYлGкЉк‚к‚кїклїкїкGкОй к кактллїкл‚к кGкGкакYлїкYлЉкОйЉк‚кЉк€лллїк кОйGк кїкYлїкл‚кљйGк к‚кл€ллл‚кљйGк к‚кYлакл‚кОйљйОй‚к€лYлїкїк кљй‚кGклYлYлYлакљй кGк‚кЇл€ллYл кGкGкљйЉкYлїклакОйљй кGкїкїкїкYл‚кОйGк к‚кYлїкYлїкљйGк‚к‚клYлл€лакОйGкљйGк€лїклYл к кGкGкїкYлакл‚кљйGкGк‚кїкл€ллљй к к‚кїкллYлакОй к кGкакЉкакак—йОйGкљйЉкYлаклак—й к кљйїкїкїклGкљйљй—йGкллллGк‚кGк к€лYл€ллGк кGк кЉкYлаклакљй кGкGкл€ллYлGкОйGк к‚кYлYл€лл к‚кGк каклYл€л‚кљйGкGкGкYлїкїклљйљй кGкїк€ллїк к—й кОйљйїкїклїкљй кљйОйакїкїкYл‚кОйGкљйGкYлїкїкак кљйљйОй‚кYлЉклЉкОй кљй кллакїкGкљйGкљйЉклїкYлЉкљй кGкGкллїклGк к‚к как€ллїкЉкGкљйљйGкл€лYл€лЉкGк‚к‚кїк€лYллїк к к кGкYлYлYлYлЉкљй к кЉклYлЇл€л‚кGкGк‚кYл€лл€лЉк кЉкGкакYлYл€лл к‚кGкGкYлїкїк€л‚кОйGк кGклїклїк кGк‚к‚кїкYлїклЉкљй кљйGк€ллїкYл‚к‚кGкGкїклакYлакљйGкGк‚кYлYллYлGк‚как как€лїк€лїк к‚к‚кЉкллYл€лЉк кGкGкїк€л€лЇлYл‚к‚к‚к‚кYлYлYл€лGкљй кGкак€лYлYллGк‚к‚к клYллтлЉкGкЉк кЉклїкYлл к к кљйїкYлїкYлЉк кGкОйЉкYлYлYллљйGк‚к кїклїкYл‚кљйGк к‚кЇл€л€л€лGкGк‚к какYлYл€лGк к кОйGкїклллљй—йGкљй‚клакл‚к—й кОйљйїклїкїк кОй кОй‚кїкакїкЉкpйОйОйљйакїкакїкGкљй‚к к‚кYлЉкЉкЉкљй к к клїкакїкGкљйGк—й клаклЉк—йОйљй—й‚клїкл кОй кљй‚кYлїкїклGк кљй каклл€л‚кљй‚кОй кYллїкїкљйОй к—йGкак‚кїкGк—йљйљйGклYлїкак кљйљйљйїклїкYлЉк—йОй—йљйакЉкакл кОйљй—йGкYл‚кїклљйGкљйљйлїкїкл кpйљйљйGкYлїкїкїк к к к‚к€лллYлGкGк‚кЉкакYллYлакљйGк к кїкYлакл‚кОй к—йGкїкакакЉкљй—й к кїклїклGкОйљйљйGкллYл€л к к‚кљйїк€ллYлак к кљй кYлїкакїк кљй кОйЉклЉкакGкОйGкGк‚кYллллGк к кљйЉк€лїклакљйGкљй кллїкак кОй к к‚к€лYл€лYлљйGк кљйллїклљйОйGкљй‚клїкYлїкљйљйљйОйїкїкїкYл‚к кGкљйЉкЇлYл€лл к‚кGкGкїкYллл‚кљй к к‚кYллYлакОй к‚к‚кїкЇлл€лЉкљйGкљйGкYлїкїкїкGк‚к‚к‚кYлYлаклакљй к к‚к€лYлЇллљй кGкЉклYллYлЉк кGк к кYллїклљйОйљйљй‚кїкїклЉкОй кљй кллллGк кGкљйЉк€ллYлЉкљйGкGкGк€л€лYллGкGк кGк‚кллаклљй к к клллл‚кљй кОй клаклак—йОйОйОйїклЉкакGкОй кљй‚кїкакїклGк к кGкїкYлїкYлGкљйGк кЉкллакїкљй—й кОй‚кїкЉкак к—йљй—й кїк‚кЉкак к—йљйОй‚клЉклGкОй кљй кїклїкїкљйОй кОй‚клакїк‚к—йОйОйљйЉкїкЉкакљйОйљй—йGклакакGк—й кОйОйЉкЉкЉкЉк к—йОйОйGкYлакїкЉкОйљйљйОйакак‚как кљйGкљй клакакакpйОйОй—й‚кїкЉк‚кљйpйОйpйљйїкїкЉкЉкОй—йљй—йЉкл‚какGкpйОй—й—йакЉк‚к‚кОйОйљйОйЉкакакл к—йОйљй какакакїк к—йљйОй‚кїкакїкGк—йљйљйGкакЉкакл кОйљй—йGк€лЉкакЉк—йљй к кїкїкЉкїкОй—йљйОй какак‚кЉкљйљйљйљйїкїкЉклGкОй кОй кЉкЉкакЉкОйОй к кЉкїкакакGк—йОй—й клЉкїкЉк—йОй—йОйЉклЉкак к—йОйpйљй‚к‚кЉк‚к—йОй—й5й‚кїк‚как к—йОйОйљйїкЉкЉк‚кОйљйљйОйЉкакЉклGкpйљй—йљйїкЉкакїкљй—йљйљйGк€ллїкакљйGк кљйїклїкл кОйљй—йЉкYлїклЉкљй кљйљйакїкакак к—йОй—йGкакGкGкGкОйОйљйОйакїкЉкЉк к—йОй—йљйакЉкїкак—йљйОй—йЉкак‚кїкGк—й кљй клакїкїкљйОйљй какYлїкак‚кљй кљй кїкакЉкакљйОйОйОй‚кYлїкакакОйљйљй кллїклGк к к кЉкYллл‚кљйGк‚кGкл€лYлЇлЉкGкGк к‚кЇлїкїклОйGкGкGкYл€лYлYл кљйGкGкаклл€лл‚к‚кЉкЉкYл€л€лЇлGк‚какGкаклYлYлїк кљйљйљйаклллакGк‚к к‚к€лYл€л€лЉк‚к кGкїк€лYллїкGк‚кGк кл€ллїкGкGк кљйїклїклакљй к к кллїк€лGк‚к‚к кл€ллЇллGкGк кЉкЇлтлYлЇлЉкљйљйљйїкYлакYлл кЉкGкЉкЇл€лYл€л‚к кЉк‚клтлYл€лак‚кGк кЉкллакYл‚кGк‚кљй‚кYлїкакакОй кGкљйаклакYлGк кGкљй‚кYлїкYлакљй‚к кљйїкYлаклЉкљй кОйGк€ллYлл кGк‚кGкакїкаклЉк к‚к‚к‚кЇл€ллYл кљй кGкак€лYлYлакОйОйљйЉкYлїкїкл к к к кїкYлїклл кGкљй кYлYлYл€л‚к кGкОйGкYлакїкїкљйљйљй кллїкYлGкљй‚кGкак€лїкллљйљй кGкYлллЇлак кGк кGк€лYлYлакљйGкGк кїклак€лїк кGкљйGкллїкакGк к к кїкЇлYл€лїк‚к‚кGкЉк€лЇллYлGкљйЉк кYл€лїкYлакGкЉк к‚кЇллYлYлGкGк‚к кїк€ллтлл‚какЉк‚к€л€лYлYлGкљй‚кљйїк€лїклЉкљй‚кGкGкл€ллл кљйGкљйЉкYлл€лак‚к‚кGк кл€лакYлЉкGкЉк как€ллYлїкљйак‚кљйлYлYлYл‚кљйGк к‚клYлЇлYлGк к к кл€л€лYлак‚какЉкЉктл€л€лYлGк‚кЉк‚кїк€ллYлЉкљйљйОй кYлYлїклљйљй‚кљйакYлїк€лїк кGкGкGк€ллYллљйљйGк кїкYл€лYлакGкGк к кїклїкYл‚кљй к кЉкїкїкїкЉк кљй кљйаклїкл кљйGкљйGклакЉкЉкљйљй кGклїкаклGкљй кОйЉкYлїкїкакGк кљйОйїклЉкл‚кљйGкОй‚кYлїкYллОйљй кљйЉкYлїклакGкак‚к‚клYллл‚к кGкљйакYлїкл‚кGкGк кGкYлYлл€л кљй к кїк€лYлYлїкљй кОйљйїкЉк‚какљйљй‚к‚к‚клїклакОй к кљйлYлїкYлGкљйGкљйЉкYлак€лЉкОйGк‚кGкїк€ллл к к‚к к‚кїкаклїкљйGкGкљйллЉкїк‚кљйGк кGкYлїклакОй к к кїкЇллYл‚кGкЉк кЉкЇлллYл к‚кGкљйїкYлїкакGкљй кGкGклYлYлYлGк кGкGкїклаклЉкОй‚к к клYлакакљй—йљйљй кYлллЉкОй к к кїклЉклGкОйGк кл€лїкїк‚кљйљйљйGклллакљй—йљйљй‚кЇллYлакљй к к‚кїкїкакYлЉкљйGк кЉкYлЉкїкакљй‚кљй—йаклакл‚кОй кОйGкYлакїкак кОйљйОй‚клїкїк‚кљйGк кGкYлакїклљй к‚кGкїкYлЉкїк‚кОйGкљйGклїкЉкак к кGкОйакYлЉклЉкљйљйљйљйїкYлакYл к к‚к какYлїклакљйGкљйљйллїклGкљйGк кїк€лл€лл кGкGкGклїкїкYлGкљй кОйGкїкаклЉкљйGкGк какYлїкїкGкОйGкљй‚клллакGкљй к кл€лаклак‚к‚кОй‚к€лYлYлл кљй‚кљйїкYллYлак‚к‚к к‚к€л€л€лYл кGк к какYллYлак кGк кGклакїкакљйОйљйОйGкїкЉклакљйGк кGкYлYлYлYлљй кGкОйGкллYлак к‚кGкGк€лYлYлЇл‚к к к как€лYлYлл к к‚к кїкYлїк€лЉк к‚к кактл€лЇлYлGк‚кЉк‚клтл€лYлЉк‚к‚к‚кл€лYл€лЇлЉк‚кЉкGклтлYл€лїкGкЉк кGкЇлYлллGк‚кЉкЉклЇлYлЇлYл‚кЉкЉкактлЇл€л€лЉк‚к‚кGкїк€лYл€лїкGкGк‚кЉкYлYллЇлакGкак‚клЇллYллљйљйGк кYлYлакYл‚кGкЉк‚кл€лл€лYл‚кЉкЉк‚клYлїкYлак‚кЉкGкак€лїк€лл‚кGкGкGкїкYллЇлакGкЉк‚кЉкYл€л€лл‚к‚к к кYлЇлл€лак как‚кїктлЇл€лYл‚кЉкЉк‚кYл€лYлЇлїк какGк кYллллGк‚какGкл0м€лYлл‚кЉк‚к‚к€л€ллЇлЉкGкакїк€лтлтлтлYлакЉкЉкактлЇлЇлЇлакЉкЉк‚кїктл€л€лYлЉкЉкїкЉкЇлтлЇлтлїкЉкїкЉкїктл€лтлЇлЉкакїкЉкYлЇл€лЇлїкакакаклтл мЇл€лЉкакакЉк€лЇлтл мYлїк€лїкїк0м м мтлЉкїкїкїктл мтл мYлЉклакїк мтл м макакїкЉк€л0мЇл м€лЉкїкЉкїктл мYлЇлїк‚кЉкакЇлтлЇлтллЉкЉкакїк0м мЇл мYлакїкїк€лтл€л м€лакллл0мkмтл0мїкакYлЉкYл мЇл м€лЉкїкїкак мkм м мYлїкїкЉкYл0мтл м млїкїклтл0мЇлЇлYлакЉкаклЇлтлтл млїкYлїктлkмЇлЇлYлаклїкЇл м м0м0мїкЉкакїк€л м€лтлл‚кїкакактлтлЇл€лакак‚кЉк€л мЇлтл€лаклїкїк м0мkмkмлЉкїкак€л0мтл0мЇлїклїкїкЇлтлтл0мYлїклак€л0м м мтлакакїкїкЇл0мтл€лак‚кїкїк€л мтл0м мїкїкїкїктлтл€лтлїкакак‚кїк мЇлтллЉкЉкЉк‚кл€лYлтллЉкак‚кїк€лYлЇлYлGкакак‚кYлЇл€лтлїкЉкакЉкїктлтлЇлЇлакаклЉкYл0мЇлтлл‚кGкЉкЉктлЇлYлтлакЉкак‚клтлтлтлл‚к‚к‚кїкЇлЇл€лЇлїкЉкакGкл мЇлЇл€лЉкакїкактл мЇлтлакакYлакYл мЇлтлYл‚к‚какак€л€лYлYлакЉкакGкак мЇл мЇл‚кЉкїк‚к м0м€лтлїкGкЉкакл€лYл€лЇлЉкакЉкGклтлYл€лл‚кЉкGкїк€лYлЇлYлакЉкїкЉкл мЇлтлл‚кїкЉкак€л€л€л€л‚кGкакGкакЇлЇлЇлїкGкЉкЉкак€лЇлYлYл‚кЉкакGкл€лYл€лYлЉк‚кЉк‚к€лтл€лЇлакGк‚какл мЇлтл€лЉкїкЉк‚к€л€лїкЇлїк‚кЉкGкактлYл€ллGкакЉк‚кYлтл€лтлак‚кЉкЉк€лЇлYл€лYлGк кGкљйакYлл€л‚к к‚кGкакЇллYлYлGк‚к‚кGкак€лїкЇлакGк‚к кЉкYлYлYл€лGк к‚к кїкЇлїкYлакОй‚к кGкYл€ллл кљй‚кљйїк€лїк€лакGкGкљйGкллїкYлGкљй кљйЉк€лYлYллљй‚кGк кYллїкYлЉкGк‚кљйЉкYлїкYллGкGкGкGкїклакYл‚кОй кљй‚к€ллYлїк кGк кљйїклакїк‚кљй к кЉкYлYлYллљйљй‚к‚кл€ллYлакОй кGкак€лYллYлGк к к кл€лїк€лїкGкGк к‚кYл€лYллGкGкGкОй‚кYлYлЇлак к‚к кЉк€лYлїкл к к‚кGклЇлYл€ллGк кGкЉк€лYлYл€лЉк‚кЉк‚кїк€лл€лл к‚к‚к клЇллл‚к к‚к кЉк€лYлллGкGк кGкл€ллYл‚кGкЉкGкак€л€лллGк кGкљйактлл€лїкGкак‚кактл€лYлл кGк‚кGкїкYлїк€лїкЉкЉкGкЉк€лЇлYллGкGк‚к‚клЇл€лYлакGкGкGк кїкллл‚к‚к кGкЉкллЇлYл к‚к‚к‚клЇлл€л‚к к‚кGкл€ллЇлYл кGк‚кЉклтлЇл€лак‚кЉк‚какЇл€лЇлл к‚кЉк‚кYлЇлYл€лакЉкак какЇллллЉкЉкЉк‚клЇл€лЇлакGк‚к кЉкЇл€лЇл€лЉкЉкакак€лЇлYлтлїк как кактл€лтл мЉкЉкакЉкYлЇллЇлл кїкак‚кЇлЇл€л€лЉкGкGк кактлл€лYл‚какGкЉкл€л€л€л‚кGкЉкGкак€ллЇлYл кЉкGк‚кYлЇлYл€л‚кGк‚кGкЉкЇлл€лYлGкакЉк‚к€лЇлЇл€лак как‚кЉктл€л€лYл‚кGкЉкЉк€лтлYл€лЉкGк‚к кЉкЇлл€л€лGк‚к‚какYл€л€л€лYлЉкЉкакїкЇлYл€лЇлGкGк‚кGкл€л€л€лїкGк‚кGкGк€л€лYл€лЉкакЉкЉкYлтл€лтл€лїклакЉктлЇл€л€лЉкЉк‚к‚клЇллYлїк—й кЉкак€л€лтлтлак‚клакакЇлл€ллЉкїкЉк‚к€лЇл€лЇлЉк‚кЉк‚кїкЇлЇлтлYл к‚как‚к€лтл€лтлїк‚кЉкЉкїктлЇл€лYлЉкакЉкакYлЇл€лтлїкЉкїк‚кактл€л€л€лЉкакЉк‚кYлтл€лЇлл‚кЉкЉкактл€л€л€л‚к‚кЉкЉклтлл€л€лЉкак‚кїкЇлтл€лЇлл‚к‚к‚кїк€лYлЇлїкGк‚к‚к клЇлYл€лЉк‚какGкїктл€л€ллЉкЉкЉкGк€л€ллЇлак к‚к‚кл€лл€ллGк к к‚кYл€ллЇлакGкGк‚кїклїкYлїк к‚к‚к‚кл€лл€лЉкљйGк кЉкЇл€л€л€лGк‚как‚кYлтл€лЇллGкїкЉкактлЇл€л€лGкакїкЉк€лЇлYлЇлїк‚какЉкЉктл мЇлЇлакЉкакакYлтлЇлтлїкGк‚к‚к‚кYлYлYллGк к‚к‚клЇл€лтлл‚как‚кGк€лтллYлЉкGк‚к кл€лл€лYл‚к‚кЉкЉкYлЇлYл€лакЉкак как€ллЇлYлGк‚к‚к кїк€лїклЉкљйGк кGкYлїклYл к кЉк‚кл€ллЇлакGк‚к‚кЉкYлYлYлYлGкGк‚кЉклЇлїкYлїк‚кЉк‚к‚к€лYл€л€л‚к‚кЉк‚кYлЇлYлтлїк какЉкЉкYл€лЇлЇл‚кGк к‚кYл€лYлЇллGкЉкGк‚кЇлYллЇлїкЉк‚к‚кїк€ллYлак к кGк‚кYл€л€лЇлЉкGкGк кЉклаклїк к кGкGкакYлYлYлGкљй‚кGкЉк€лYл€лYл к кGк кїктлл€лїк кGк к‚к€ллїкYлGкљй к клЇл€л€л‚кОйGкОйGклїкллОйОйGкGкакYлїклак к к как€ллїкл кљй к клтлYл€лїк кGкGк‚кYлYлїкYлЉк кGкОйЉкЇлYл€лїк‚кЉк‚к‚кYлЇл€лЇлЉкGк‚к‚кл€лллл‚к‚как‚к€л€лїкYл‚к к к‚какллЇлл к к‚к кїкYлїкYл‚кОйЉкGкЉкЇл€лЇлYлљйGкGкGклЇлл€лїкGкЉк кGк€лYллїкGк‚к к‚кїкЇллYлакGкЉк кGкYл€лYлYл‚кGк‚к как€лYлYлак к‚к кGклїкїклGк кGкGкакЇллїкїк кЉк‚кGклїкїкїкGкОй кљй‚к€ллYлїк к‚к‚кGкYлYллYлGк кGк к‚кїкакїкЉк—й кљйGкYл€лл€ллЉкак какЇл€ллYлGк кGкљйак€лїклЉк к к кЉк€лYлїкїк кљй кљйак€ллYлЉкљй к к‚кїкїклл кОй кGкїклакЉк‚к—й—йОйљйЉкЉкЉкїкљй—йљйОйGкїкакїк‚кОйљй кGкл€лYлЇлЉк кGкGкаклакїкакGкОйОй‚каклїкл к—й кљйGкYлїкїкЉкљй кљйљйл€лїкл‚кљй‚кGк‚кЇлYл€лл к‚к‚к‚клYлїкYлакљйак‚какYлїклл к к кљйїкЇлллакљйGкљй‚кYлллл‚к к кљйаклYлЇлїкGкЉкGкGкYлаклYлGк кGкљйак€лаклакGк‚к к‚кл€ллл‚к к‚к кЉкЇлYлїкЉк к кОйљйлїкаклGк к к кїкYлаклЉкОйљйљйљйакїкїклЉкGкGк кGклїкїкакљй к кGклYлЇлYл‚кљйGкGк‚кYлл€лл кGкGк кYл€лYллак к‚к‚к‚к€ллYлYлGк кGк как€ллїкЉкљй кGк‚кYлYлїкYл‚кGкЉк кїктлїк€лїкљйЉкљй‚к€ллїкYл кОйљйљйїк€лYлYллGкЉкЉкактлЇлYлЇлак‚какаклтлЇлYлїкGк‚кGк‚к€лYлл€лЉк‚кЉкЉклЇл€лЇлYл‚кЉкЉкGкїклїкYл‚к кGк кGкYллл€лGкљй кGкакYлллЉк кGк кGк€ллїклљй‚кGкОйаклакл‚кљй‚к кGкYлакакїкљйљйGк кїкЇллЇлїк к‚к‚как€л€лЇл€лGк к‚кGкакYлYл€лїк кGк к клїкїкл‚кљйЉк кЉк€ллYлїкGк‚к кGкїклллGкљйљйОйGклїклїк к к‚к кїкYлїклGкОйљйљйGклїкакЉкОйљй к клYлїклЉк кGкљй‚кYлїкYлл‚к‚к‚кGкYллакYлакGкGкљйЉкYлYлллGкGкЉк кЉкYлїкYлакGк к кЉкYлллл к кGкљй‚кїкїк€лЉкОйљйОйGклYлїкл кљй к какYлїклїкGкGк к‚кYлллїкGкљй кљйGкYлїкYлл к кљйОйїкYллYлЉкGкGкљй‚к€лакїкакGкGкОй кллYлл‚к кGк к кYлїклYлљй кGк кл€лїкїк‚кОй‚кGкЉкYлYл€лYл к‚к‚кGкЉкYллYлакљй‚к к‚кЇллїклљйљйGк‚какYллYлакОйGкљй‚к€лYлл€лакGкЉкGклЇлYл€лїк к‚кGк клYлYлYл‚к к‚к кЉкЇл€лЇллGк‚кGкGкїкYлYл€лак‚кЉкGкакYллYллGк к кљйакїкллакGк‚какЉк€ллYлїк кЉкЉк кЉкYлллїк кЉк‚к‚к€лллYл кљй‚к кYлYлїк€лЉкGкGкGкЉк€лYл€лYл кGкGкGкїк€лYл€лЉкљй‚кGкGкYл€лYлл кGк‚к‚кїклїкYлЉкљйGкGкGкл€ллYл‚кљйGк кЉк€лїклакљйљй кGклYлакл‚кљйљйљй‚кYлїкллљйGк‚к кYл€л€лЇллGкЉкGк‚кYлYлллGк к кGкл€лл€л‚к—й‚к к‚к€лїкллљй к‚к кїкЇллїкGкљй‚к‚кGк€лїкїклљй к кОйак€лллакљй кGк‚к€ллYлYл к‚какGкїклїклакGкGк‚кЉкїкYллYлGкGк‚к кЉк€лллакљйGк‚к кллакїкGк к к кЉкЇлYл€лїкGкЉк‚к к€л€лїкYлGкОйљйљй‚кYлYлYлїкљйGк‚к‚клл€лЇлЉк кGкGкЉк€лллїк кGкGк кYлЇлїкл‚к как‚кGк€л€л€лл к‚к к кл€лYлYлак к‚кGк‚кYлYлакїк кљйGкљйакYллYлак кGкGкїкЇлYллYлGкGк‚к какЇлаклЉкОй кОй кл€лYл€л‚к—йGк кЉкYлллакљй‚кGк клYлллGк к‚кљйак€лаклак кGкљйGкYл€лїкYл‚к кGк‚кЉклїкYлYл кGк‚к кYлЇлл€л‚кОйGк кїк€лYлїкак кGк к кїк€лїкYл‚кљйЉкGкGкYллїкїкОй‚кЉк клЇлїкYлакОйGкЉк‚кYлYл€л€лGкGк‚кGкЉк€лак€ллGкак‚какYлYллYл‚к‚кЉк клтлYл€ллGкGк к клYлакYл‚кљй‚к кGклїкYлак к‚кЉкGкYл€лїклЉкОй к какЇлїк€лYл кGкGкGклYлїкїкЉк кGк‚к‚к€лYллїкљйљй кљйїкYлїк€лїк к‚кGкЉкЇлїкYлЇлЉк‚к‚к‚клтл€лЇлл к‚кGк‚к€ллYл€лGкGк‚к‚кїкЇл€лYлїкGк кGкЉкYллїкYлGк кЉкGкак€лакYлїкОйGк‚кљйакYлYл€л‚к к‚к кїк€лYл€лїкGкЉк к к€лYлYл€л‚к кGк‚кїк€лYлЇлYлGк‚кЉк‚к€лтл€лЇлак‚кЉкGкЉк€л€л€лYлЉкGкЉкЉкYлтлїкYлЉкОйGкGкЉкЇллллљй кGкљйїкYлакYлЉкљйGкљйGкYлллYлЉкакЉк кїктл€лЇлYлGкЉкЉкїкЇл€лYл€лЉк‚как‚кїктлл€лл‚кЉк‚какYл€лл€л‚кGкак‚кїкЇллЇлл кGк кGклїкакл‚кљй к кїкЇлYлYлакGк‚кЉк‚к€лYллЇлак кGкGк‚кYлYл€лYл‚к‚кGкGкак€ллЇл‚кОйGкљйЉк€лїкллGк к‚кGкYлтлYлл‚к к кGкGклїкYлїкљйљйОйОйЉкYлакїкакљй к к кYлллак кGкЉкGк‚кYлллЉкОй кGкљйїкYлакл к—йОйОй‚клїкYлакљйGк кGклллїк к—йљй—й какЉк‚кЉк—й—йОйљйїкїкакЉкљй—йОй—й клЉкакак к кЉкGкїклаклGкљйGк к‚кїкакакїк кљй к кїкYлакїк кpйљйОйљйїкакакакљйљйљйљй‚кїкак‚кGкpйОйљй кїкїкїкїкGкGк‚кGкакїкїклакОйGк к кYллакїкGкљй‚к к‚кYлїклакљйљй кGкYлYлYлЇл‚кљйљйљй‚к€лЇллїк кљй кGклYлїкл‚кљйОйОй‚клїклїкљй кGкОйїкакакїк к—йОй кЉклаклакОй—йGкGкаклїкYл‚кљйGкGкGкYлллакљйОйљйОйЉкїкл€л‚кGк к кGклYлакЉкљйљйGк как€л€лYлак кGк к кYлллїкљйљйGкGкакYлїклЉк—йљйОйОйаклЉкак к—йљйљйаклакYлЉкpйљйљйљйллл€лЉкљй кGкак€лїкYлЉкОйљйљйGклYлакїк кОйGк к‚кїкакїкакGкGкGк клЇлїкл‚кОй кGк‚кЇлллїк‚к‚к кGкл€ллїкЉкљй‚к‚кGк€ллYл€лЉк‚как как мYлтлл‚какакакЇлЇлYл€лЉк к‚к клтллYлакGк‚кЉкЉк€лЇл€лтлЉк‚к‚кGкїкYлллїк‚к кGкЉкYлYлїкYлGкОйGкGкЉк€л€лYлл‚к кGкљй€лYлакYл‚кљйGкGкїк€лYлЇлYлЉк‚кGкЉклYллYлЉк кGк кGк€ллїкакОй кЉк как€лїк€лЉкљйGкGкЉк€лл€л€лGк‚к кљйїк€л€лYлакGкGк‚к‚ктл€л€лЇл к кЉкљйїк€лYл€лакGкЉк к кYллїклак‚кЉк‚клЇлл€лл‚какЉкЉкYлYл€л€лЉк‚кЉк‚клЇл€лЇлїк‚кGк‚какYлYл€л€лGкљй кGкакYллЇллGк‚к‚к кїкЇлл€л‚кљй к кЉк€лYлYллGк кGкGкYлЇлYл€лак кGкGк‚к€л€лYл€л‚к к‚кОйЉкYлїклЉк к кљй к€лYлYл€л‚кЉкак‚кїк€лYлYлак кGкљйGклYлYлїкGкGк‚кљй‚к€лакYлїк к кОйGкакїклYл‚кљй кљйакЇлYлЇлYл‚к‚к кGклYлYл€л‚к кЉкGкЉкїкїкїкакљй кGк клYлїкл‚кљйљйGк‚кЇлYлїкїкGк кљйљйЉклаклЉкљй‚кGкGклакїкакОй—й—йљйл€лYлYлЉкОйљй к‚кYлЇлїкакGк‚к‚кGклЇлYллакОйGкGк‚кYлїкЉкїк к—й к каклакїкGк—йљйОйљйакакакл‚кљй‚кGкак€ллYлїк кљйљй кYллакїкGкљй кGкЉк€лллїкљй кGкљйллїклGк кGкGкїк€лллл кGкGкGкл€лYл€л‚кљй‚кGкакYлїклїк кљйGк кїкллЇлакОйЉк‚кGкЇллYл€лGк к‚кљйїкYлїк€лак кGкљй клакїкакљйОйљйљйакYлїкYлЉк к‚кОй клїкїкл‚к кGкљйЉкYлїкллљй кGкGклллYл кљйGкGкак€лїкYллGк‚кGкљйЉкїкїк€л‚кљйGк кЉк€лїклYлљйљй кљйїкYлїклGк—йGкGк‚к€л€ллїкGк кGкљйакїкЉклGкОйљйљйљйїклак‚к—йОйОй—йЉкакЉкїк‚к—йОйљйљйлїкЉкЉкОй—йОй—йЉклїкїк‚к к кОйљй€ллїклљйGк кОйЉкллYлїкљй кGкGкYл€л€лYл‚к кGкљйЉкYллYлакОйОйљйОйїклакYлЉкGк‚кGкак€лллїк—й к кОйїкллYл‚к к кGкЉк€лYлллGкGк‚кGкл€лYлYлЉк к кGкGк€лYллYл к кGкGкїкYлYл€лак к‚к‚кїктл€лYл€лGкљйЉкЉкїк€ллYлак кљйGк‚кYлYллYлGкGкGкљйїкЇллYлак к‚кGкGкYлYлЉкл кОй‚кљй‚к€лллакљй к к клYлїкYлGкљй‚к‚какЇлYл€лїкGкак‚кGкYл€лїкїк‚к кGк к‚кїкїклакОйљйGкGкл€лакл‚кљйGкљйGкллїкїк‚кљй к какїкакїк кpйљйpй кллїкак кОйљйОйЉкYлїк€лакљй‚к кGкYлїкїкл‚кGк кљйакїкїкYлЉкљйGк к кYлЇлYлYлGк кЉк кЉк€лYлYлЉк к‚к к‚к€л€лллGк как‚кактлYлYллGкЉкакGклYллYлЉкGкGк кЉкYлїкїкїк к кGк‚клYллYл‚кGкGкGкЉкYлїклїк кљй к кїкллYл‚к к кљй клїкллGк кGкGкак€лYл€лЉкОйљйGк‚кYл€лл€л‚кGкЉкGкак€ллYллGкGк кGк€л€л€лЇлGк кЉкGкакЇлYл€лїк к‚кGкGкл€ллYлGкGкGкљйЉклїкYллОйGк к к€л€ллYлGк кЉк какЇлYл€лїкGк‚кGкGкїкYлак€лїкGкGк‚кЉк€лллл к‚к кОйак€ллYлакљйЉкGк‚к€ллYлYлGк какGкYлтлл€лЉкGкїк‚кЉк€лYл€лYл‚к‚какЉкл мYлYлїкљйЉкGк‚к€л€л€лЇл к к‚к к‚кYлллакљй‚кGк кїкYллYл‚кGкGкљйЉклїкYлакGкЉкGкGкYлYлїк€л‚кљй кљйЉклллакGкGкGкGкYл€лаклGк к‚к кЉк€лїклїк к‚к‚к кл€лл€лакGкЉкGкGкYллYллљй к‚кљйакYлаклЉкљйGк к‚кYлїклакОйљйGк какYлллЉкљйGк‚к‚клYлYл€л‚к‚кЉк какЇлYлYлакGк‚кЉкакYлЇл€лл к кGк какЇллїкакGк‚к‚кЉкYлYл€л€л‚кGкЉкакак€лYл€лл‚к‚кЉкїкЇлЇллЇлЉк‚как‚клтлYл€лYл к‚к‚к‚клYллYлЉкљй кGкїк€лYлYллGк‚какЉк€лтлYл€лакGкЉкGкЉк€ллакакGк‚кЉкGкїкЇл€лтллGкЉкЉкЉкЇл€лYл€лЉк‚кЉкЉкїкYлл€лакGк‚к к‚кYлYлїкїкGкGкGкGкїк€лл€лїк к‚к к кYлYлїкYлGк к‚к как€лYлЇлїк‚кЉкGкЉкЇлЇлллGк кGкљйЉкYллYлакОйљйGк клYлїкїк кGк‚к кЉкллЇлїкљй к‚кGкYлтлллЉкљй‚кGкЉкЇллYлїкљй к кGкїкYлїкYлЉк‚к‚кGк‚кYлYлYлл к кGкGкл€лл€ллЉкакGк к€лЇлЇл€л‚к к‚к‚клYлYлЇлїк‚к‚кGк‚кYлЇл€лЇл‚кљйакЉкїк€лYл€лYл‚к‚кЉкЉк€лЇл€л€лакЉк‚кGклЇлYлYлїк‚кЉк‚кЉкЇлтлл€л‚к к‚к‚кЉк€лYлїкїкGкGкЉк‚кYл€л€л€лGк кGк как€лYлЇллљй к кљйл€лїкYлїк к‚кGкЉклакакл кљйGкљйак€лїкYлакљйGк кЉк€лїкллGкGк‚кGкїкYлYл€л‚кљй к кЉк€лYлакл‚к к‚кGкїк€лYл€лак‚кЉкGк‚кYлYлYллЉк к‚к‚кїкЇлллїк кљй кGклYлїклGк—йGкЉкЉк€лл€лYл кљй кGклYл€л€лЉкGкакЉкакЇлYлл€лGк к к кYл€лYлЇл‚кљй‚к кGкакакїкЉк—йpй—йОй‚кYллл‚кОйGкОй к€ллYлїкљй к‚кљйЉклїкл‚кљйОй кGклллїкGкGк к как€ллYлак кGкGкGкYлYлYл€лGкGкGк кЉкїкакYлїк кGкGк кл€лYлYлGкОйGк кЉк€лYлYллGк‚к‚к‚кл€л€лтлЉк кGкљйЉклл€лYл кљйGкGкYлЇлїк€л‚кGк‚кGкGкллїкYлGк кGк какYлїк€лїкGк‚кЉкїктл€лл€лЉкGкGкGкл€ллYлїк к‚кЉкак€л€л€л€л‚кљйљйљйЉк€лїкYлакљй к кGкYл€лл€лак‚кЉк‚кїктлYллїкљй к кОйїклакYлљй к‚кљйЉклллак к кGк‚кЇл м€лтлакGкЉк‚кактл€лЇлYлЉк‚кЉкЉк€лтл€лЇлїк‚какЉкЉкЇл€л€лYлGк кGк‚кYлтл€лЇлл‚как‚как€лакYллљй кGк каклЉкYл‚кОй‚кGк кїклїкл к кGк клYлЉкллљйGк‚кGкYлYлYл€л‚к кGк кЉкїклYлакGк‚к‚к‚кYл€лллGк кЉк к‚кYлїкїкакљйGкGкGклYллYл‚кGк‚кGк‚к€лїкYлїкОй к‚кљйакYлYлл‚к‚к кGкЉкYлYл€л€лЉк‚к‚кЉк€л€лл€лЉкљйGкGк‚к€лYллYл кљй кGкYлYлл€лЉк кОйљй‚клїкїкїкGк кЉкGкакYлYлYлак к‚кљйОй€лїкїклљй—йљйОй‚кллл‚к кљй—й кYлYлЉкїк кОй к какYлїкакЉкОй кљй кїкїкїкїк кОй к к‚к€ллYлак кљй кGкїкYллYл‚кљйљй к‚кїклїклGкљй к какYлакїк‚кОйGкОйGкYлллакОйљй к—й‚какаклЉкОйGкGкакЇллYл€лGкGкGкљйїкЇлYлЇлакљй‚к‚кЉклллYл‚к к кљйЉклїк€лл кGкGкЉкЇллїкYлGк кGк как€лYлYлїк к к к‚кл€лYлYл‚кGкЉкGкакЇллYлїк к‚кЉк‚кYлYлл€лЉкGкЉкGкакЇлЇлЇлYл‚кЉкак‚кYл€лїк€лїкGкак‚к‚кYллл€л к к‚кљйїкYлїкЇлЉкGкЉк кGкYлYллл‚к к‚кGкїк€лїк€лЉкљй кљйGкллїкYл‚кGкGкGкYлЇллYлакGк‚кGк‚к€ллїкл к кљйљйаклЉкакак—й кЉк кллл€л‚к к кљйакYлїкYлїкGкGк к кYлЇлїкYл‚кљйGкљй‚кYлЉкїкїк кGк‚кОйЉкїкакYлGкОй к—й кYллїкакљйОй к какYлакїкGкpйљйОйGклЉкYлYл к кGк к‚кїкЉкїкGк—йОй—й кїкїкїкїкGкљйљйљйакллYлЉкљйљйљйGклїкїкїк кGкGк кЉк€лїклЉк—й кОйGкїкїкллGкОйGкљйЉк€лакїкакљйGкGк клїкЉкл кGкGкљй‚клїклїкљй к кОйллллGкљй кљй‚кYллїкакљйGкљйљйYлллYлGкљй‚к как€лїклїк кGк кGклYлYлтлЉкљйGкљйGкYлакїкїк к‚к‚кGкЉк€ллїкЉкљй‚к‚какЇллїклЉкGк к кл€лYлYлїкGкGк‚к‚кYлЇлYлЇл‚к‚какGклЇлYл€лїк к к‚кGклЇлїк€л‚к к кGклЇл€л€лл‚к‚к‚кЉк€лYллYлЉк к‚к кЉк€лЇл€ллGк‚к‚кGкYл€ллЇлакGкакЉкакЇл€л€лYл к‚кGк кYл€ллЇлЉкGкЉкGкЉк€ллллЉк кGкљйакЇлїкYлак кGкGк кYлYлYлYл кGкакЉкЇлтллтлYлЉкЉк‚кЉк€лЇл€лYлак‚какЉклЇлYл млGкакGкЉк€лтлтл€л‚к‚кїкЉкїк0мYлтл€л‚кїкїкЉкЇл€л€лтлакGкЉкЉкїкЇлYл€лYл‚к‚к‚кЉк€лЇл€лтлїк‚кЉкакYлтлЇлтл€лЉкЉкакЉкYлтл€лЇллЉкЉк‚кЉк€лЇл€л€лЉкЉкЉкЉк€лЇлЇлтлYлЉкїкЉкїк0мЇлЇлЇлЉкакЉкЉкЇлтлYлтл€лЉклакїктлЇлЇлтллЉкакак€л мYлЇлYлакїкакЉкЇлтлYлтлїкакакЉкїктлYлYлїк к‚к‚к‚кЇлЇл€лтлЉкЉкЉкЉкїкЇлЇлЇл€л‚к‚к‚кактлтлтлЇлакЉкакакїк мYлтлЇл‚какакЉк€л€л€лтлїкаклакЉктлЇл0м€л‚какакак€л мЇлЇлїкЉкак‚кїктлтлтл€лЉкЉкакакYл мЇл м€лЉкїкакїкЇл€л€л мЉк‚как‚кYлтлYлЇлYлакїк‚кЉкЇлтл€лтлакЉкакЉкYлтлЇл м€лакакакактлтлЇлтлакЉкак‚кYлтлЇлЇлYлЉкЉкакЉк€л мЇл мїкакїкЉкYл мЇлтлЇлакакакЉкЇлтлYлЇлїкЉкїкЉкїктлїкYл€л‚кЉк‚кGкїк€лл€лЉкGкак‚кЉк€лл€л€л‚кЉкак‚кYлЇлYлЇлYлакїкЉкЉк€лYлYлїкGкGкЉкЉкїкЇллYлїк кGкGкGкЇл€лл€л‚к‚как‚кїкЇл€лЇлYлGк‚к‚кЉкЇл€л€лЇлакЉкЉк‚кїкYл€л€лYл‚какЉкЉкЇлЇл€лЇлїк‚кЉк как€лакYлїкGкЉк‚к‚кYлЇлYллЉк кЉк‚кїкЇл€лЇлїк‚к‚кGкGкYл€лYлЇлак‚какЉкактлЇллл‚к‚кGкGкїк€лллакљйGкGкGклYлYл€л‚к‚к‚кљйїк€лїкYлЉкљй кљйЉкYлYлїкїк кGкак‚кл€ллYлакљйЉкGк‚к€л€ллYлЉк‚как‚кїк€лYлЇлїкGк‚к‚кЉкЇл€ллYл‚к‚кЉкGкакЇлYлYлїк к‚как‚кл€лYлYлЉкGк‚кGкакЇлYлYлYл‚кGкЉкЉкYлтлтлЇлЉк‚как какЇлYлYлYлGкGкЉкЉкYлЇлл€лїк‚какЉкакЇлYл€лYлакЉкЉкЉкїктлYлЇлYл‚как‚кЉкЇл€л€лYлЉкЉкЉкGкYлтл€л мл к‚кGкЉкЇлЇлЇл€л‚к‚к‚кGкїк€лYлЇлл‚кЉкЉкЉк€лЇлл€л‚к‚к‚к клтлYлYллGк‚кїкак€л€лYл€лЉкЉкЉк‚кїк€лллїкљйGкЉк‚кYлЇлл€л‚кGкак к‚к€ллЇлYлљй‚кЉк‚кYлтл€лтлїк‚какЉкїк мЇлYл€лЉк‚как‚клЇлїкЇлїкGкак‚кЉкЇллллGк кGкGкакЇлYлЇлYлакїкGк‚кЇл€лYлтлак кGк какЇл€лЇлак кЉк‚кGкYл€лYлYлGкGкЉкЉкїкЇлYлYлЉк к‚к‚как€лЇлYл€лак‚какаклЇлЇлYлїкЉкїкЉкЉкЇлтллЇлїкЉкЉк кл мYлЇлYлGк‚кЉкЉкYл€лYл€лЉк‚к‚кGк‚кYлYлYлYл к‚кЉк‚кЇлЇлYлЇлак‚кїкЉкакYл€л€лЇл‚кGкЉк‚кYлтл€лYлїк‚к‚к‚к‚клYлYлYлЉкЉкакGклтллYлакљйЉк‚к‚к€лYлYлYл‚кGк к клЇлллл‚кЉк‚кGклYлYлYл к к‚к‚кїкЇл€лтл€лGк‚кGкGкYлЇлYлЇлакGкGкОй‚к€л€лYлак к‚кЉкЉклYлл€лЉкGкЉк к‚кYлллакОйGкЉкЉк€л€л€лЇлїкGк‚кЉкакЇлYлїкак к к кљйЉкYлїклїкGкGк кGклYлакїкљй кGк—йак€лїкїкЉк—йGк кљйYллYлYлGкЉк‚к какYлїк€лїкGкакGк‚ктл€лл€лак‚какЉкїкЇлїклїк кGкGкGк€лЇлл€лакGк‚кGкїкЇлл€ллGк‚кЉкЉкЇлтлYлтлак какGкЉк€л€лYлїк кЉкGкGкллїкЇлЉк к‚к кGк€л€лYлїк кGк‚к какЇлYлYлл‚к‚кGкЉкYл€лYллGк‚кЉк кїкYлїк€лак‚к‚к‚к кїклїклGк к‚кGклЇлYлЇлїк к‚к‚кЉкЇлYл€л€л‚к‚кЉкЉкїк€л€л€лYл‚какGк‚кЇлЇл€л€л‚кGк‚кGкЉк€лYл€лYл кЉкЉкGкл€лYлYлЉк кЉкЉкактлYллЇл‚к‚кЉк‚к€л€лYлЇлакGкак‚кЉк€ллYлYл‚кЉкЉк‚кЇлтллYлл кGкGк‚к€лYлЇлїкљйGк кљйЉк€лл€лYл‚кЉкGкЉкYлїклЇл‚кGкЉк кїкYлл€лак кЉкGкЉк мЇлЇлтлЉкGкЉк‚кЉкЇл€лЇлл‚кїкакЉкЇлтл€лтл‚к‚кїк‚как€лYлЇлл‚кЉк‚кактлтлYлЇлїкЉкакЉкїк€лYл€л€лGкЉкакЉк€лЇл€л€лЉкGкGкGкЉкYлл€лYл‚к‚кЉкЉкYлЇл€лЇлЉкGкЉк‚кїктлЇлYлтлGк к‚к клЇллЇлак‚кЉкGкЉкЇлYлЇл€лGкGкЉкGкYлЇллтлїкGкGк‚к‚кЇлтл€лтлЉкGкЉк‚кл€лл€лїк‚кЉкЉкактлтлYлЇлл‚кїкЉкїктлл€лYл‚какїкакYлЇлYллЉкЉкакЉкїктлЇлтл€лЉкGк‚к‚к€л мЇлтлїк‚как‚кЉк€л€л€л€лGкGк‚к кYл€лїк€лЉк какљйGкЇлYл€лYлGк‚кGкGкYлЇлЇлЇлїкЉкакGк‚к€лYлллGкGкак‚кїк€лYл€лл‚кЉк‚кактл€лYлтл‚к кЉк‚кYлЇллYлїк‚какGкGклYлYлYлЉк к‚к кактлакїкакљй к кЉкYлYлїклGк к‚кGкак€лллїк кЉкGкGклYлїкакGкљй кљйGкїкаклак—йљй кОйїклакYл‚кОйљйљйљйїкакїкїк к кОйОйаклїклGкОй к кGклїклїкОй кGкљйакYлЉкл‚кОй кОй‚к€лїклл кGк‚к‚кїкЇлYлтлл‚к‚кGкЉк€ллл€лЉк кGкљй‚кЇлYлYллGк‚к‚кЉкллїклGкљйЉк кЉкYллYлїкGкGкљйљйлYллYлGк к к к‚к€лїкYлл кGк к кїклYлYлЉкљйGкGкGк€лїкYлYл кGк к кл€л€л€лЉкОй‚к‚как€ллYлYл‚кЉк‚к кYлYлїк€лЉкљйGкљй‚кЇл€лYлЇлЉк‚как‚кYлЇлYлЇлїкGкЉк‚кЉк€л€лл€л‚к‚кЉкGкїкYлллакGкЉкЉк кл€лYл€лGкGкGк‚кїкЇл€л€лл кGк‚кGк€лЇлYл€л‚кGкЉк кЉклїкYлYл‚к‚кЉк‚кYл€лл€лакGкGкGк‚к€лYлYлїкGк‚кGк‚кїк€л€лЇлак‚кЉк‚кїкЇллYлYл‚кЉкЉкЉкїк€лYлYлїкGк‚к‚кїкЇллYл€лЉкЉк‚кGкїкЇлYл€лїк‚как‚кЉк€л€л€лYл‚кGкGкGкак€лYлЇлл‚кЉкЉкакЇлтл€лЇлЉкGкЉк‚кїкЇллЇл€л к‚кGкЉкYлYлYл€лЉкGк‚кGкЉк€лYл€лл к к‚кGкл€лYлЇлЉкОйљйљйGкYллїкїкљйGкGкGклїкїкYл‚к кGк‚кїк м€лYл€лЉкїкакЉк€л€л€лтлYл‚кїкЉкактлЇлЇл€лЉкакЉкЉкл м€л€лїк кЉк‚кЉкЇл€л€лYлЉкЉк‚кGкак€лYллЉк к‚кGк‚кYлЇл€л€л‚к кGкGкЉк€лїкYлYл к‚кGкGкYлYлак€л‚к как‚какЇллYлїк кЉкGкЉк€л€л€л€лїкGкЉкЉкїк€лл€лл к кGкGкл€лїк€лЉк к‚кGкЉк€ллYлл кЉкЉк‚к€лЇлYлл‚к‚кЉкGк‚кYллYлYл‚к‚кGкGкЉкYллYлїк кЉкGк‚к€лYлїк€л‚кGкЉкGкакYллYл‚к кGк к‚клYлїкїкGк кGк как€ллYлїкGкЉкЉк‚к€ллїк€лGкGкЉкGклтлак€лл к‚кЉк‚клтлYлYлЉк к‚кGкакЇлїклYлGк‚кGк‚кллл€лакGк‚кGкЉкЇл€л€л€л к‚к‚к‚кYллїклЉк‚кЉкљй‚к€лYлллGкGкЉк‚кїкYлїклЉк—й кљйGкллїкїкљй к к какYлїкYлїк к кљй‚кллакїк кљй‚к‚кYлЇллЇлак‚кGкљйЉкYлYлYл€лGкљй‚к как€лYлYлакGкGкGк‚кл€лллGк‚как‚кЉк€л€лЇлYлGкGк‚кЉкYл€лYлЇлїк‚кGкGкїкЇл€л€лYлЉкЉкЉк‚кYл€ллYл‚кљйGкGкл€лїкYлїкGк‚кЉкак€л€лYлЇлак к‚к‚какЇллYллGк‚кЉк‚клЇл€л€лїкGк‚кGкЉк€лYл€л€лЉкGк‚кGклЇлYл€лїкЉкЉкЉкак€л€лYл€лЉк кЉк‚как€лллЉк как‚к‚к€лYлYлЇлак‚кЉкЉкїк€л€лтлYл‚какакакЇлтлYлЇлїкЉкїкЉклтлYл мтлакїкакактл€лYл€лїкЉкїкакїкЇл€л€лїкGкGкЉкЉкYлЇл€лЇлYлЉк‚к‚кл м мтл€л‚к‚кЉк‚кYлтлЇлтллGкак‚кактлЇл€лЇлЉк‚какGклЇлл€лїкGк‚к‚кїк€лYлЇлтлакGкЉк‚кїкЇлакYл‚кОйGкGк‚кYлллл к к‚кGкакЇлл€лїкGкЉкЉкGкллїкYл‚к кGк‚какЇлл€лл‚как‚какЇлЇл€л€л‚кGкGк как€лYлYлакОйGк к кїк€лYлYлЉк‚как‚как€л€л€лЇлЉкGкак‚клЇлїкYлак к‚кGкЉкЇлYлYлYлGкGкЉк‚кYлтл€ллЉкGк‚к‚к‚к€ллYлЇл‚к‚кЉкGкЉкYл€л€лїк‚к‚кGкїкYлл€лтлЉк‚к‚к‚кїктлYлYллGкGкGкGкYлЇл€лYлЉкGк‚кGкакЇллYлYл кЉкЉкGк€лЇл€лЇлак‚кЉк‚кїк€лїкЇлYл кЉкЉкЉк€лЇллYлЉкGк‚кGкакЇл€лЇлYл кљйGкGкїкYлїкYлакљйЉкGкЉкЇл€л€лл‚к кGкЉклYлак€лїк кGкОйGклїклл кОйљй—йGкакакїкGк—й‚кЉк‚кллллЉкGкGк к‚клакак‚кљй‚к к клакакYл кОйGк какЇлл€лЉкОйGкЉкЉкл€ллYлGк—йGкљй‚кїкаклЉкОй‚к к каклїкYлЉк кЉкGкЉк€ллYллЉкак‚к‚кл€лYлYлGк к‚кGкЉк€ллллОйљйљй кл€лїкЇлЉкљй кGкакYллїкл кљй‚к каклїк€лЉкљй к к‚к€лїкакак к кGк кїкYлл€лїк к‚к к кл€ллл‚кОй кљйакYлїклїк кљй к кїкYлїкYл‚к к‚к как€лаклYл кGк кGклYлYл€лЉкGкЉк как€ллYлїк к‚как‚к€лтлYл€л‚кЉкЉкGк‚к€лYлYлїк к‚к‚кGкYлЇлїкYлак к‚кGкGклїкYлYл к к к клЇлYл€лЉкGкGк к кYллл€л‚кGк‚кGкїк€лїк€лїк к кGкЉкYлYллYл‚к кGк кЉк€лл€лак кGкGкљйаклл€л кљй кОйGкакакїкЉк кGкGк кYлYлл€л‚к к к кЉк€лїкїкакљйGкљйљйлYллYлGкОй кОй‚кЇл€л€лYл‚кЉкGк‚кл€ллл‚кОйGк к кYллллљйGк‚кљйYлYлїкYлїк кGкGк‚клYлллљй к‚кGкак€лїк€лїкОй кGкGкїкллYл к к к—й‚кїкаклЉкљй кљйЉкYлллYлGк‚кGкGкїк€лїкYлїкGкЉк к к€лЇлл€лЉкGкакGкїкYлїкїкЉкљйGк‚кGкїкЇлYлYл‚к кЉкGкакYллYлїк кGк‚к как€ллYл‚кОйGк кЉкЇлллїкОйGкGкGклЇлЇл€лїк‚как‚кЉктлYлYллљй кGк кл€ллYлак к‚к‚кGк€л€лYл€лGкGкЉк‚какЇлYлYлїкGкЉкGк‚к€лYллYл‚кGк к как€лїклак к‚к‚к‚кYлYлїкїкGкљй к—йЉкллл‚кљйGк к кYлYлл€л кљй кљйЉкYлллїкљй к к‚какYллЉкGкљй кљйGк€лїкЉкїкљйљй кљйл€лїк€л‚кљй‚к к‚кYллїкл к к‚кGкYлтллYлЉкљй к к‚кллЉкакљйљйљйљйЉкYлYл€лїкљйGкGкЉкYлЇлYл€лGк кЉк‚кїк€ллак‚кљй‚к кGкYлYлакїкGк кЉкЉклтлYлллGкGкGк клYллл‚кљй‚кGк‚клЉкїкYл кљйGк‚кїклїкYлЉкОй кGкЉкYлллл кGкЉкGкїкїкїк€лакљй к кGкYллїкл к к кљйл€лл€лЉкљй‚кGк‚кЇл€лїкїк к кGк как€лїк€лак к‚к кGкїкїкакїк кОйЉк как€лїкYлЉкљй кGкЉкїкїклYл‚к кGк‚клтлїкЇлYл кЉкЉк‚кЇлЇллYл‚к к‚кGкактл€лYлл кGкGк‚клYллYлакGк к кЉкYлллл‚к‚кЉк‚кл€лїклЉкGк‚кGкЉкYлYллїк кОйGк кЉк€лл€лїк к‚к‚к‚к м€ллYл‚кGк кљй‚кїклл‚к к‚к к‚к€л€ллYлЉкGкGкGкїкYлYлYлїк к‚кGкЉкYлллYлЉкљй к какЇлл€лYл кGкGкGк€лЇлїклЉк кGк к‚кЇлYлYлакОйGкGк кїклїкакGкpй кљйGкYлїклакОйљй кGкЉкїкакїкЉк к кОй‚кYлллїкљй кGкGклЇлYлїкЉк к‚кGкGкYл€лYл€л кGк‚к как€ллYлїкљй‚кGк‚кYллллGк кGкљйЉк€лїкYлакљй к к к€ллїкYл‚кGк‚кGкїкЇллYлЉк к‚к‚к‚кїк€лYлYл‚к к‚кљйаклїклакљй кGк‚кYл€лYл€лЉкGкGк‚кЉкYлЇл€ллGкЉкGкGкїкYлллЉкОй‚к‚кЉк€лїклїк кGкGкОйЉклїк€л‚кОйGкљйGкллїкїк кљй к к‚кїкакYлакљйGк‚к‚клYллїкљйљй‚кљйїктлллакљй кљйGклїклл‚к кGк кЉк€лїкакакљй‚кGкљйїклYлYл кОйGкGкїк€лYлYллљйGкЉкGклллYл к к‚кљй‚кYллYлїкОй‚кGк‚к€л€лїклакGкЉкGкак€лллак к к к кл€лїкYлЉкљйGк кЉкYлллакОйљйљйОйак€лакYлЉкОй‚кОйGкYлїкїкакGк кGкљйЉкYлакYлЉкОйљйљй‚кYл€лYлYл‚кGкакGкЉкYлакїкакљй к кGкїкакїкїк‚кGк к кЉкYлллїк к‚кGкGкл€лYлл‚к кGк‚какЇлYлYлYлGкак‚кGклYлїкYлЉкљй к к‚кYлїкYллGкљйGкGкїкїк‚как к к кОй кYлллїкGк к к как€лаклЉкОйљйљйGкллїкYлGкGк‚кGкїк€лїкYлакОй кОй кYлYлїкакљй к к—йЉкYлЉкїкл кGк‚к‚кYллЉкакљйОйОйОй‚кїкакїкGкpйљйљй к‚кЉкакакGк—й—й5йОйакGкGкGк5й—й—й—йGкакGк‚к кpйљй—й кїкЉкакак—йОйОй—й‚какакл‚кљйGкGк‚кYлїкїкYлGкљй‚к‚кїкYллYл‚кљй к кљйYллл€л‚кGкGкGкакЇлл€лакљйЉк‚к‚кYлїкакл кљй к—й‚кллл‚к к‚к к кллїкYл‚кљйљйGкаклїкак‚кљй к‚кGклYлїкїкљйGкЉкљй‚кллYлїкОйОй кљйїк€лїклGкОй кОй‚к€лїкYлїкљйGкљйGкїклїкл‚кОйGкGкЉклакллљйљй к кїкїкаклЉкљй кљйљйлакЉкакОйљйљйљйакїкакїкЉкОй кGкGкYллл€лGкGк‚кљйЉк€лYлYлакљй кGк‚кYлYллYл кGкЉкGкактлYлYллGк к кGкYлYлїклЉкGкЉкGкЉк€лYлYллGкGк‚кGкYллїкYл к кGк к‚кYллїкїк‚кGк‚кGкїкYлїкYлЉкGк‚кGкGк€ллїкYлGк‚кЉкљйл€лакїк‚к—й кљйGкYлл€лл к к к кїкЇллYл‚к к‚к кЉк€ллїклGк к кљйЉкл‚кїкЉкљй кОйљйлЉк‚кїк кљйљйОй какакакак кGкљй клїкЉкл‚кGкак‚как€лYл€лїк‚к‚кЉкЉкYлYлYл€лак к‚к‚каклакїкакОйОй к каклїклЉкљйGк к‚кЇллїкїкОйљйGкGкаклїк€лЉк кЉкОйGк€лаклїкОйљйGкљйЉклЉклЉкОйGкљй‚кYлїклл к‚к‚кGкак€ллYл‚кљйGк кGкллїкл‚кGк кљйакYлЉклЉк к‚к к кїкYлїкїк‚кљй кљйGклакYлакОйљйGкGкллак€л кљйGкОй‚клїклїкљй кОй кїкYллл к—йОйОйGклЉкїкїк‚к‚кљйљйїкYлїкYлЉк к‚кљй к€ллїкл к к к кїкYлїклЉкљйGкљй‚кYлYлYлYл кЉкакОйїк€лїк€л‚кОйGкљй к€л€лїкакGкGкGкGкакYлаклЉкљйGк к кллллЉкОйGкGкЉк€лїкYллљйGк‚кGкYлYлл€л‚кОйGкGкак€лїкYлYл кGкGкGклYлїк€лЉкљй‚к к‚к€лYлYлYл‚к к‚к‚кллакYлGкОй кљй‚клYлїкак кљй к каклакїк‚кОйGк кљйллYлYлGкGк‚кGкїк€лїкїкїк‚к‚к‚к‚кллл€л кGк‚кљйак€ллЇлак кЉк‚кGклYлїкл кљй к каклЉкїкакљйGкGкGкллYлYл к к к кїк€лYл€л€л‚кЉкакGклYллл‚к кGкљйGк€ллїкїкОй кљйОйакакЉкак кpй кОйGкїкакYлїкљй—йљйљйЉкЇлл€лЉк кЉкGкGк€лллYлGк‚к‚к кїкYлїкYлЉк кGк к‚клYл€л€лЉк‚к‚кЉкл€л€л€лїк кGк кGкЇлЇл€л€лЉкGкЉк‚кYлтлл€лл‚какЉкактл€ллЇлакљйGк какЇлїк€лYл‚кЉк‚кGкллакYл‚кљй‚к кЉкYллYллGкGк‚кљйакллYлGкљйGкљйGкYлїкїкл кGк‚кОйїкYлїкл кљй кљйЉкYлїкакакОй—й кGкїкYлїкл кљйGк к‚кYл€л€лЇл‚к‚кЉк‚кл€лYлYлїк к кGкGкЇл€лл€лЉкЉкЉкGклтлYл€лак кGкљйЉк€лЇллYлЉк кGк кGкYлїкїкЉкљйGкGк кллYлYлGкљй‚к кGкYлаклак к‚к кGкїкYлїкл‚к кЉк‚к‚кYлYллак—йОйОйОйакїкЉкїк кОйGк к‚клакYлїкљйљй кGклYлл€лЉк‚кЉк как€лYл€лл‚кGк‚кGкїк€лакYлакљй‚кљй какЉкїкїк кОйљй к‚кYлїкYлїкОй к кGк€лYллїкGкGкGкОй‚клїкїкЉк—йљй‚к кллаклGк—йОйОйGклакїкЉкљйGк кОйїкакїкл кОйљй кЉкЇлЉклЉкОй кљйљйЉкакЉкакљйй—й—й кYлїкїкакљйљйGк каклЉклЉкОй‚кљй кYллїклGкGкGкGкїкїклYлЉкОйGкОй кллїкїкОй—й кљйЉкакЉклGкљйљйОйОйакакакїк—йpйОйОй кїкакакGк5йОйОй—йаклаклGкљйљйљйЉкїкЉкак‚кОйОйљйОй‚кїкакакљй—й кљйљйлакакїкљй кљйОйакакаклGк к кОйGкїкакїкЉк—йОйОйОйакїкGкїкGк5й—й5й—йЉк‚какЉк—й—йљй—йGкакЉкак кpйљйpй—йакЉкGкGк—й—йОй—й кЉкЉкак кОйљйљйљйїкїкЉкак кОй кОйЉклакїк‚кpйОйОй—йїклакYл к—йљйОйЉкYлллак кљйљйљйакїк‚как кОйљйљй клїкакЉкОйљйљй кїк€лакакGк—йОйpйљйакакл‚кОйОйљйљйЉклакїк‚кљй кGкGкїкакакїкљйљй кОйакїкЉкїк‚к к‚к кGклїкYлїкGкGк‚к‚кїк€лїкYлЉкGкGкљйЉкYллл€лЉк‚кЉк как€лллЉкљйGк‚к‚кYлYлл€лGк кGк кЉк€лYл€лл кЉкGк‚к€л€л€лYлЉкGк‚к кЉктлїкYлл к к к—йакYлаклЉкОй‚кљй‚к€лїкакїк‚кGк кљйакYлїкYлЉк кGкљйGклїкїклљйОйљйљйїкЇллYлак—йGк к‚кYлллак кљй к кЉклїклЉк—йОйОйљйїкїкЉкїк кљйОйљй‚кYлїкїк‚кљйљйљй кїклЉкїк кљй кОйЉкYлїклїкљйGкGк какYллл‚к к кљйЉкYлл€лYл кGкGкљйллакїкGк—й к к‚кYлїклїкОйОйљйОйЉкїк‚как кОйљйОйGклакїкїкОйGкљйОйЉклЉкак кpйGк кGкїкакЉклОйљй‚кGкакїкїклЉкОйљй к клїкаклОйpйОй—йЉклаклЉк кGкGк‚какїкїкїкљйљй к кЉкллїкакљй к к кїкYлїклGкОйGкљйЉкYлїкYлЉк кGк кљйлтлYлЇл‚кљйЉкљй‚клллЉк—йљйGкGкїкYлїклGк—йљйљйЉкYлллїкGк кGк кїк€лаклак к кљйЉк€ллYллљйОйGк‚клYлїкYллЉкїк‚к‚к€л€ллл‚к кGкGкYл€лYл€лакљйЉк‚кGкYллїкYл к к‚кљй‚кYллYлЉк к‚к к кYлYлакїк кљйљйљйЉкїкллак к кљйОйакїкакYлљйОйљй—йЉкїкакїкакљйљйGкGкїк€лїкл‚кљй‚кљй‚к€лїкїкл кљйGк клЇллYлакGкGкGкЉк€лллл кGкGкGкакYлYлYлакGк‚к кGкїклYлл к кGк кЉклїклїк к‚кљй какїкакїкGкљй кљйакYллYлЉкGкGк‚к‚кїкYллїк кОйљй—йGклаклак кGк кGкYлYлїкл‚к к‚кљйGклїк€ллљйљйGк кїкYлаклЉк кGк к‚клаклакGк‚к‚к‚кїклїкЇллGкЉкЉкЉкЇл€ллYлЉк‚кGкGкак€лїкYллGк‚к к кYл€лїкYл‚к кGкљйакллYллљйGкGкGкYлYлYлYл к‚какGкакЇлаклакљй кљй кллїкїк кљйGкљй‚к€лYллак кGкљй кїкїкакїк кљйGкљй‚клллЉкљйGк кљйл€лYллGкљйЉкGкGкЇл€ллїкљйGкGкљйакYллYлЉкљйЉкЉкЉкЇлYл€л€л к кGкGкїклїкYлакGк‚к как€лл€л€лGкЉкак‚кїкЇлЇлтлл кGкGкак€л€л€лЇлЉк‚как‚кїктл€лЇллGкЉкакак€л€лYл€лак‚какЉкїк мЇлтл€л‚к‚к‚кЉкЇлтл€лЇлакЉкЉк‚кїктл€лЇл€лGк‚к‚кЉк€лЇллYлїкGкЉкGкЉклл€лYл кЉк‚к кYлЇлYлЇллакакакїк м€лЇлЇл‚кЉкакЉклтл€лтллакакЉкакЇл мЇлЇлак‚кЉк‚кл€лYл€лїкGк‚кGкGкYлYллтл‚к‚кїкЉклтлл€ллљйакЉкактлтлтл€лакЉкЉкЉкїктлтлЇлYл‚кїкїкЉк€лЇлYл€лЉк‚кЉк‚какYллYллGк‚к‚кЉк€лЇлЇлтлїкЉкЉк‚кл мYл€л€лGкЉкЉкЉкл€л€лтлїк‚кЉк‚кЉктл€л€лтл‚кЉкЉкGк€л0мЇл м€лЉкЉкGкЉк€лЇлтлтлЉкЉкакакYлтлЇл мїкGкЉк‚кЉктл€ллтлакGк‚к как€лїк€лїкљй‚к‚кGкллYл€л‚к кЉкGк‚кЇлл€лYлGкGк‚кGкYлЇл€л€л‚к‚кїкGкЉк€лллакљйGкGк кYл€лїклЉкGк‚к кЉкYлакYллGкљй к кЉкYлакїк‚кљйGкљйGклїкїкїкОй кљйљйакYллYлGкОй к к‚клYлїклGк‚кЉкGкл€ллYл‚кОйGкGк‚кYлллYл‚к кљйљйЉк€лYлYлїкОйGкGкGкїклакїкGк к‚к‚кїклЉклакОйљй—й—йЉкакЉкл кљйGк как€лїклак кGк кљйак€ллл кљйGк кЉкYллYлїк кGкGкGкїкїкїкYлGкОй к—йGкYлїкллљйGкGк кїклакїкGкОй кљй кллллљйљйGкљйЉк€лакакак к‚к‚к‚кYллакїк кОйGкљйЉк€лYлYлакGкGкGк кллїкак кљйљйОй‚кYлїкYлак—йљйљй кїклYлYл‚к кGкGкакYлакYллљй к к‚кїклїкл‚кљй кОйGк€лллл кGк к кїкїкїкYлЉкОй к кGкYлїкллљйGкGкGкїклїкл‚кОйGк к‚кYлїкYлYлGкGкак как€лїкЇлак к кОй кїкYлллGк кљй—й‚клїкїкЉкОйGк кGкїкїкїкїкGкљйљйGкЉклЉкакЉк—йGкGкљйYллїкл к—й к кЉкYлYллїк кљй к клЇллїк к—йљйpйGкYл‚кЉк‚кОйљйљй—йак€лакYлGкљйљй—йGкакакак‚кpй5йОй к‚кїкЉкїкGкОйGкОйGкакЉкакакљй—йОй—й‚кл‚кл‚к—йљйљй кллїкакОйОй кpйGклїкл‚к к кОй клїкЉкакљй—йОйОй‚клакЉкGк—йљйpй—йЉкЉк‚кїк кpйОй5й клЉкакGкpйОй—йОй‚кЉк‚кЉкљй—йљй—йGкїк‚как‚к—йОйљйpй‚какGкакљйpйОйОйљйїкЉкЉк‚кОй—й—й—йGкЉк кЉкљй—йGкОй клакакЉк—йљйОйОйакїкакЉк к5йОйОйљйакакакакљйpй кОйЉкYлаклЉкОйљй к‚клїклакОй—йљй к‚кїкЉкїкЉкљйGк кGкллакїкљйљйGкОйGклїклЉкОйљйОйОйЉкїкїкYлЉк кЉкGкЉкYлїкїкЉкОй кљй кллїкїк кљйGкљйGкллYлл к‚к‚кGкїклїкYлЉкљй кљйGкїкакїкїкљйGк‚к кїкYлїкYлакОй‚к к кYлллїк кGк‚к‚кл€ллYлїкљйGк к к€лллл к к кОйЉкYлїклакљй кљй каклїклGкљйЉк к‚клаклЉкpйљйОй какїкакYлGк кGк кЉклаклакGк кGкGклYлакYлGкОйGкљйЉкYлїклакљй к к кл€л€лЇлЉкОй к кЉкЇлYл€лYл кGкGкGкїкїкакл‚к—й кљйGкYлїкїклљй кGкОйЉклїкл‚кGк‚к кЉк€л€лЇлл кљйGк кактлЇл€лак кЉк‚к кл€лYл€л‚к кGк кїкЇллYлак кGк кGк€ллїкл к к кОйGк€лїкїкакљйGкљйљйїкYлYлYл‚кGкGк каклакїкЉкОй к кљйаклЉкл‚к—й кљйљйллїкїкОйљй к каклYл€лЉкљйљй кGклYллл к к‚кGкїкЇл€л€лак‚кЉк к‚к€ллїкYлGк‚к‚к какYлYл€лїк к к‚к‚к€лтллYл кљй‚к кїк€лYлYлїк кЉкGкGклYлїкїкGк кGк кїкЇллYлл‚к‚к‚кЉкYлїкїкYлGкљй‚кљй‚к€лїкїкїкGкGкGкGкїкYллYлЉк кGк кGклакїкїкљйGкGкGкїкYлїкYлак кЉкGкакЇлЇлЇл€лGкЉк‚к‚клYлїкЇллљйGкGкак€лл€л€лљй к‚к‚кїк€лїк€лYл к‚кGкGкYлллYлGк кGк как€лл€лїк к‚к‚к‚кYл€лїкїкЉкGк‚кGкакЇллYлїк кGк‚к‚кллYлYл‚кљй к к‚клYл€ллGк‚к к кYл€лYл€лGкљй‚кGкGк€лYл€лак—йGкGк каклїкїкGк к‚кGкїклакYллGкGкЉк‚кїк€лїкYлак как‚кЉктлЇл€л€лЉк‚к‚кљйактлYлтлїкGк‚кGкЉкYлллYл‚кОй к как€ллЇлїк к‚к‚кїк€ллакYлGк к‚к кЉк€лYл€лїк к‚кЉк‚кїкЇл€лYлЉк к‚кGкЉкЇлYл€лакОйGкGкGклїкл€л к к‚к какYллYллљйGк к кїкYлїкл‚кљй‚кљйGк€лїкїкЉкОй кGкљйЉкYлїкакGкОй кОйљйлїкїкїкљй к‚кљйЉкYлакYлакљй кљйљйакїкакїкљйљй кљйЉкїкаклЉкљй к к клакакл кљйОйОйЉк€лїклЉк—йљй к кїкїкакїкGк кљйОй кїкакїкGкОйљй к кЉкакакїк‚кљйОйОй какЉклак—йОй к—й‚какЉкїкљй—йљйОйGкїкакл‚кОйОйОйљй‚кїк‚к‚к к—йљйОйОйакакїкЉкОйОйОй—йЉклЉкак‚кpй—й—йОйЉкЉкїкак—йpйОйљй‚кYлакакЉкљйОй—йљйакїкїкїкљйОйОйОйGкїкакїкЉк—йљй кљйаклЉк‚к кљйОй—й клЉкЉкЉк—йљй—й—йЉкакїкл кpй кљйGкак‚кЉкЉкОй—йОй какїкЉкЉкОй—йОйpй кїкїкїкЉкОй—йљйОй‚кїкїкїк‚кљйGк к‚кYлїкїкак кљй кGкакллYлGкОй кљйљйллYлл кљйљйОйGкакGкакGкpйљйGкGкYлїкЉкЉкОй—йGкОй какЉкак к—йОйљйОйЉкаклYлGкОйGкљй‚к€лїкїкакОйљйљйљйїкакЉкакљйpйљйpй‚какЉкакЉк—й—йОй—й‚какакЉк кpйpй5йљйїкакїкїкљйОй к—йЉкакЉклGкОйљй к‚как‚кЉкакОйpйљй—йGкак‚клGк5й—й—йОйакїкакЉкОйОйљй—й‚какЉкїкGк—йљй кGкїкллЉкљй—йОйљйакYлїк€лЉк—йОйљй кїклакїк к—й к кЉкYлїкл‚кОйљйљйGкїкYлїкїкЉкљйљйGкЉклїкїкакОйОй кљйакакЉкїкљйљйљйОй‚какїкакЉкОй—йGк какYлакїк кpй кGкакллYлїк кљй кљйаклакYл‚кљй кОйЉклллYлЉкGкGкљйлYлл€лакљйGкGкGкїкїкYлак кљйОйОйїкYлїклЉкљйGкљйљйакЉкаклGкОйљйОй‚клЉкакакљй кљйОйїкакЉкїк кљй кљйЉклакакЉк—йљйОй—йакакакак к—йљй—й клакїкакљй кGк кллакїкGк—йЉк‚какYлЉкїкак к кGк кллакїкGкљй кљйGкЉкакЉкїкљй—й кљйЉкYлїкYл‚к5йОйpйpй‚к‚к‚к‚кљй—йљйОйGкакGкЉк к5йОйpйОй‚кGкGкGкОй5й—й5йGкак‚кїк‚к—йљйљйљйак‚кЉкак кpйОйОй‚клакакЉкpйОйОйОйїкакакЉк кОйљйpй‚клЉкакакОй—йОй—йаклїкїкGк—й кљйGкакЉкакЉк к—йОйОйакакакїкGкОйGк кЉк€лїкїкYлЉкљй кGкллакїкакОйљйОйGкYлллЉк кОйОйpйGкЉкGк‚кGкОйОй—йОйакЉкЉк‚к—й5йОйpй‚какGкїкЉкљйљй кОйїкїкЉкїкGкОйGкљйЉкYлакїкїкљй кGк‚какаклїк‚кОйљй—йGкЉкЉкЉкGкОйљйљйОйллїкYлЉк—й кљй‚клїклл к—йљйОйакїкЉкїк‚кpйОй—йGкакЉкЉкЉкљйОйљй—й‚кЉкакїк к—й кОйљйЉкЉк‚кЉк к—й кљйакYлакл‚кpйљйљйљйлїкЉкЉк кљйљйОйGкЉк‚какЉкОйОйОйОйакїкЉкак к5йОй—йљйїкакакЉкОй5й—йљй‚кїкЉкЉк к—йОйОйљйакЉкЉкЉк—й—й—йОй‚кЉкакакљй—йљйОйGкїкакїкЉкљйОйОйGкакїкЉкїк кpйљй—й как‚кїкЉкpйОйОйОй‚каклакљйОй кљй клїкакакљйљйљйОйGклЉкїк к—йљйљйОйакЉкак‚к—йОйОй—йљйак‚кЉк кpйОйљйОй‚кЉкаклљйОй кљйљйак‚к‚к кpйОйљй—й к‚к‚кЉкОй—й—й—йљйїк‚кЉкЉкОйОйОйОйЉкїкЉкак к—йљй—йОйYлЉкїкЉкОйGкљйљйакїкїклОй—йОйОй‚кїкЉкакЉкОйљйљйОй‚как‚кЉк—йљйљйОйљйЉкЉкїкGкpй кОй—йGкїкЉкЉк5й—йљйОй—йЉкакак‚кОй кљйОйGкїкакїкОйОйљй кљйїклїкЉкљйGкGкљйљйїкїклљйљйОйОй—йGкїкЉкGкpй—йљй—йљйїкЉкїкGкОй к к какллЉкОй—йОй—йОйакЉкїк к—йОй—й—й‚кїкЉкїкОй—йљйОйОйакЉкїкакОйОй—йОйGкЉкGкакљй5йОй—йљйЉкЉкакакОй—й к—йGкакGкЉкGкpйљй—йљйїк‚кЉк‚кОй—йОйљйаклЉкїк‚к—йОйљйљйакЉклїкОйОйОй—й какакакGк—йОйОйОйЉкїк‚какљйОйОйОйGклїкїкЉк—йљйGкОйЉклЉкл кОйОйpй клїкакЉкОйОй кљй‚какакак к—й к—й какаклл к кОйpйакЉкЉкл к—й кОйGклакЉкїк к—йОйљйїкїкЉкЉк‚к—йљй—йљйЉкGкЉкїкљй—йљйОйїкллїкЉкљй к кЉклакакак‚к—й‚кљйакїк‚кїкакОйљйОйGклїкїкл‚к к к кїкїк‚кЉкакОйОйОйљйїкЉкакїк кpйОй—й‚кїкЉкакїк к кљй кїкакїклЉк к‚к клYлїкїкїкљйљйљй клЉкаклЉкљйљй—й‚какакїкак кљйљй—йїкїкЉкл‚кљйGкљй‚кїкїкYлїкGкОйОйљйЉклїкYл‚к кљй кОйїкїкїкак—йљйGкљйGкїкїкЉкОй кОйљйGкЉклакљйОйGкљй‚к кЉкїк к‚к‚кGк к кGкGк‚кЉкGкGкGк‚кЉк‚кљй кљй кљй к‚кGк кљйљй к‚кGк кGкљйGкGкGкљй к‚кљй кGк к к кОйљйљйОйGкGк к кљйОйОй к—йљй к—йљйGк кљйљй—й—й кОйОйљйОйОйљйљйљйpйpйОйОйОй кљй кљй—йОйОйљйљйОй—йОйОйОйОйОй—й—йОйОйљйљйОй—йОй—йОйљйОйљйОй—йОйљйОйpйОйљйОй—й—й—й—йљйОй—й—й—й—йpй—й—йОй—йpйpйpй—йОй—йpйЉкак кpй5йpй—йpйљй‚к‚кGк—й—й—йpйОй‚кGкGкЉк—й5йpй—йЉк‚к‚кЉкGкОй—йGкакЉкЉкЉкЉкGк—йљйЉк‚к‚какЉкЉкљйОйљйїк‚кЉк‚кЉк‚к—йљйЉкїкїкїкGк‚кљйpй кЉкЉкак‚к‚кЉкОйЉклакїкЉкЉкакакЉкЉкЉкакЉкакл‚какїкаклїкаклакЉкїкакакакїкакакЉкЉкакЉкакакЉкЉк‚как‚кGкGкЉк‚какак‚какGкGкЉкакЉкакакакїкакЉкЉкакїкїклЉкЉкїкакакЉкЉкЉкЉк‚кЉкGкGкакакак‚к‚какакGкак‚к кЉкGкGк‚кGк‚кЉкЉк‚к кGк‚к‚к‚к‚кЉкЉкЉкЉкЉкЉкакакЉкЉкЉкакак‚к‚кGк кGк к‚кGкGкЉк‚какак‚какЉк‚кЉк‚кGкGк‚к‚к‚кЉк кОйїкїкЉкЉкакїк кОйљйљйлїкакакОй—йљйОйОйЉкGк‚кGкpй—йљйОй какЉкљйpй—й—й—й—йGкакљйљй кОйОй кОйак‚кОйGк к к к кљй кОйљйGк к к кљйЉк‚кљй кОйљйљй кGкYлGкОйљйљйGкљйGкYлїклљйљй кљйОйакл‚кЉкљйОйGкљйGкYлїкїкакОй‚к к кYлYллл‚к кGкОйGкллїкљйљйОй к к кGкљй‚кGк‚к к кGк кGк кљйGк кGкGкGк‚к к к‚кGк к к‚к‚к‚кЉкакЉк‚кGкЉкЉкакЉкакЉкGк‚кGкGкЉкакЉк‚кGк‚к‚к кљй‚кGкGк‚кGк‚к‚кGкљйљйОйОйљйљй кљйGкGкОй—йpйОйОйОй—йpйpйpй5й5й5й5йй5йpйги5йpй5й5йpй5й5ййййй5йpйpйpй5йгиЌигиЌигигийpйгигигигиЌигиЌигиги…иJиJиJиЌиЌи…иJи…и…и…иJи…и#иJи…иЌиЌи#и#иJи#и#иJиJи#и#и#иќзќз#иќзСзќзќз#иJи#иќзJиСз…иги5йpй5й5йгигиййгигигигиййй5ййгиййЌи5йpйpйpй5йги5й—й5й5й5йpй5й5й—йpй5й5й—йОй—й—йpй5й—йОйОй—й—йpй—йљйОйpй—йОйОйОйОйpйpйОйљйОйљйљй—йљйљйљй кљй кљй к кОйGкGкЉкЉк кGк‚кGкЉкакїкакЉкЉк‚кЉк‚кЉкЉкЉкЉкаклїкакїклYлл€лллYлллYллллYлЇлл€л€лYл€лл€лтлЇлтлтл€л€лЇлтлтлтл м€л€лЇл м мтл0м мтл м мkм м0м0м0мтлтл мЇлтл м м м м0м0м мтлтлkмkм м мkм мтл м0м0м0мтл м м м мтл м м0м0м0м0м0м м0м0мkмЭм’м’м’мkм’мkм0м0м0м0м0м0м0мkм0м м0м м м0м0м0мkмkм’мkм м м0мkм0мkм м0мkмkм’мkмkм0мkм0мkм’мЭм’м’м’м’мkмkмkм’мЭмЭмЭмkмkм’мkм0м’м’м0м’мkм0м0м мkмkм м0м’мkмЭм’мkмkм0мkм мkм’мkмkм0мтл м мkмkмЭмkмkм м м м мkм0м’м0м0м0м’мЇлYлkм м мkм мтлїкїклтл0м0м м0мтлаклїкЇлkмЇлkм0макакЉкїк мkмтл0мЇллYлYл€л0мkм0мkмYлYлЇл€л мЭмkмkм м€л€лЇлтл’м’мkм’мЇлл€лЇл0мkмkм0м0мYллтлЭмkм’м’м’мkм€лЇл’мkм м0м0м0м’мkм0м0мkмkм0м’м’мkм’мkм0м’м м0м0м’м’м’мЭм’м’м м0мЭмkм м мkмkмkмkм’мkм0м’мkмkм0мkмkм0м мЇл мтлЇлтлтлтл м м м мтлтлтл м0мkмтл мтлЇл мkмkм м0м мЇл м м м0м0мЭм0мkмkмЭмkм’м’мkмkм0м’м0м мkмkмkм’м’мkм’м’мЭм’мЭмЭмЭм’м0мkм м0мkм0мkмkм’мЭм’мkм’мЭмkм0мkм’мkм0м0м’м’мkмkмkмЭм’мkмkмЭмkм’мkмkмkм0м’м’м’м’мkм’м’м’м’мkм’мkмkмkмkмЭм’мkмkм’мkмkмЭм’мkм0мЭмЭмЭм мтл’м’мЭмkм’мkмkмЇл0мєм’м’мkм м0м м€л’мєм’мємЭмЭмЭмЇлkмЭм’мЭмkм’мkмkмkм0мkмkм0м0мkмkм м м0м0мkмkм0м0мkм0м0мkмkм0м0м0мkм’мkм0мkмkм0м0м0м м м мkм0мkм0м0м0м0мkм0мтл м м0мтл0м м0м мтлkмтлтл мЇл м м0м0мkм м мтлЇл мЇл мтлтлтлЇлЇлYлЇлЇлЇлтл м мЇлЇлЇлЇлЇлтлтлтл м мтлтл мтл м0м0м м0мтлтл мтл м м м мтл0мkмkм0м мтлтл м мЇл0м0м0м0мkмkм0м0м0мkм м м м мkмkм0мkм0м0мkм0м0м мkмkм0м’м’мkмkмkм0м0мkм’м’м’мЭм’мkмЭмєм’м’мkмkм0мkмkм’мkмkм’мЭмЭмЭмkмkм’м’мkм’м’м’м0м0м0мkмkмЭм’м’м’м’мєм’м’мЭмємЭм’мkмємнЭмVннємннємнЭмємємЭмєм’м’мємємkм’мєм’м’мєм’мЭмнЭмємЭмЭм’мkмЭмkм’мЭм’мЭмЭмЭмєм’мkм’мkм0мkмkмkм’мємЭмЭмємЭмkмЭмтл мVнємємЭмЭм’м м€л м’мЭмємєм’м0мЇлтл мємємЭмємн мЇлЇлЇлЭмєм’мЭмkмтл0м м’мн’мємєм м м0мтлємVнємVнЭмЇлтл м0мємємємЭмтл0м мтл’м}нЭмнЭм м0мЇлтлнЭмємkмЇлтлтлЇл мнємЭм м м0мтл€лЭм’м’м0мтл мтл м0мнЭмkмтлkмkм’м0мkмЄнЭмтлтл м м0м мЭм}н мтл0м0м0м мтлЭм мЇл0м0м0м0мтл0мkм мkм м м м м м м м мтлтлтл€лЇл€лЇлтлтлЇлЇл мтлтлЇлЇлЇлЇлЇлЇлЇлтлЇл€лтлтл€лЇлYлYлYл€л€л€лтлЇлтлЇлтлтл€лYл€лтл€лYлYл€лЇлЇлЇлтл€л€л€л€лЇлтл€л€л€лYл€л€лЇлЇлЇлЇл€лтлтлYл€л€лЇлЇл€лЇлтлтлЇл м мтлтлтлтл м мтлтл мтлтлЇлтлЇл€лЇлтлЇлЇлЇл мтлЇлЇлЇл€лЇлЇл€л€л€лтл м€л€лтлЇлЇлYл€лЇлЇлЇл€лтлЇлтлЇлЇлЇлЇлтлЇлЇл€л€л€лЇлЇлЇл€л€л€л€л€лЇлтлЇлтлЇл€лЇлЇл€лYлтлЇлYлл€лЇл€лYл€лтл€л€л€л€лЇл€ллYлYлYллYлллYлYл€л€лYл€лтлYллYл€лYлYлЇл€лїкYлYллYлYлYл€ллїкYлYл€л€л€л€лYл€лYл€л€лYл€лллYлллYлYллїкїклYлаклїкїкYлаклакакYлїкїклїкїклYлїклакїкїкакїкїкллїклїкїкїкакїкакакYлллл€лYллYлYл€лYлYллїкакЉкЉкЉкакакакллїклїк‚кЉкЉкЉкак‚кЉкЉкЉкакїкакакакїкакЉкїклїкїкЉкЉкЉкакїкYллакїкллYлYлл€ллаклакаклїкакїкакїкаклакаклллїкїкЉкакакЉкак‚кїклакЉкЉкЉкакїкїкакакакЉкакЉкакїкак‚как‚к‚кЉкЉкакЉкїкїк‚какакЉкакЉкакЉкакЉк‚к‚какїкакакакїкаклакаклакїкЉк‚какЉк‚кЉкЉкЉк‚кЉк‚кGкЉкакЉкакакЉк‚кЉкЉкЉкGкGк кGк‚к‚к‚к‚какЉкЉкакЉкЉк‚к‚к‚кGк к‚к‚кGк‚к‚кGк к‚какGк‚кЉкЉкакGкЉкЉкЉкЉк‚к кGкGк‚какЉкGкЉкЉкGк‚кЉкЉк‚как‚к‚к‚кGкЉкGк‚кGк‚кЉк‚к‚к‚к‚кGк к кљйGк кљй к к кGкGк кљй к кGк кљйGк‚к‚к кGкGкGкЉкGк‚кЉкGкЉкЉкакЉкЉкЉкGкЉк‚кGкGк‚кGк‚к‚к‚к‚кЉкЉк‚к к‚кЉкGк‚к‚кGк кGкGкGкЉк‚кGк кGкGк к к кљйОйљйGкљйљй кљй‚к‚к‚кGкљйљй к к‚кљй кGкОй кGкGкљй кљй к кљй‚кGкОйљйGкљйљй кљй к кљйљйОйљй—й—йОйОй—йОйОй—йОй—йpйОй—йОйљйОй—й—йpйОйљйљйGк кљй—йpйОйОйОйОйљйљй—йОйОйљй—йОйОйОйљй—йОй кљйОй кљйљй к к к к кОйОйљйОйљй кљйGкGкљй к кљй—йpй—йљйљй—йОйОй—й—й—й к кОйљй к кОйљй—йљйљйљйGкpй—й—й—йpй5йpй‚кОййpй—й—й—й—й к‚к5й—й5йpйpйОй—йак‚кpйОйљй кОй—й кїкОй—й—йОйОйОйОйЉкGк—й—йpйОй—й—й клљй—йљйљй—й—йОй‚кЉк—й кљйОйGк к кїкGк кљйљйљй к кЉкїкpйОйљйОйљйОйОйїкGк—йОй—йљйљйљйїкYлОйљйGк кGкGкGкїкGкљй к—йОйОй—йЉкїкОйОй—йpйОйОй—йакGк5й—йpй5йОй—й кїкpйpй—йОйљйОйљйїкЉкљй кљйОй кљйGкїкљйОйGк кОйљйљйїкїкОйљйљйљйљйљйGкїк кОйGкљй кљйОйЉкак—й—й—й—йљйљйGкYлGкОйљй—й кљйљйакїкљй—йОйОй кљйљйакGк5йpйpйpйљйљй‚кїкљй—йљй—йОйОй кїк к5йpйpйpйpйpйGклОйОйОй—йљйpйОйїкЉкОйpй—йpйОй—йGкїкGкОйљйљй кљй кїкакОй—йљй к к кЉкл‚к—й кљйљй кљйЉкакpйpй—й—йОйОйGкак‚кОйОйОйОйОйљйїкїкљйљйpйpйОйpйGкак‚кОйОй—йpйОйОй‚кїкGкОйОйОй кОйЉкакЉкљй—йОйљйљйОйакЉк к—йљй—й кОй кїкакљйpй—й—й—й—й‚кЉкЉкОйОйљйGкОйGкїкЉкGк—йљйљйpйОй‚кЉк‚к—йОй—йpйpйОйЉкЉкОй—йОйpйpйpй‚к‚к‚кљйpйpй—й—й какЉкGк5йОй—й—й5й‚какЉкљй—йpйљйОйљйакЉк‚кpй—йОй—йpйGкЉкЉк к—йОй—йpй—й‚кЉк‚к—йpйОйОй5йGкЉк‚кљй5й—йОйpйpйакGк кpй5й5йpйй кЉк‚к кги5йpй—йpй‚к кGк—й5йpй—й—йљй‚кGкGк5йpйpйpйpйЉкЉкЉкљй5йpйpйpй кїк‚к‚к—й5й—й—й—йЉк‚к‚кљйй—й—йpй к‚кGкЉк5й5й5йpй—йGкGкЉкљй5й5йpй5йОйак‚кЉк—йОй—й—йpйїкакЉк кpй—й—йОйљйакЉк‚к—йОй—й—й—йЉкїкакЉкpйОй—йpй—йЉкGкGк—йpйОй—йpйGкак‚кGк—йpй—й—йОйакGк‚кљй—й—й—йОй‚кЉкGкЉк—й—й—йpйОйЉкЉк‚кGк—йОй—йpйљйакакак—йpй—йpйОйак‚к‚кGк5йpй—йpйљйЉкGк‚кОй5йpй5йpйЉкGкGкGк5йpйОй—йљйїкGкак к5йљйОйОй‚кЉк‚кGк—йpй—йpй—йЉк‚кGк—й5йpй—йОй‚к‚кЉкЉкpй—й—йpйОйЉк‚к‚кGк5йpй—йpй‚какЉкЉкОйОйОйОйљйЉк‚кЉк кйpй—йpй‚кїк‚кЉкОйpйОй—й кЉк‚как к—йљй—й—йGк‚к‚кЉкОйpй—й—йОйїкакак‚кpйpй—йpй какакЉкОйpйОйОйљйакЉкїкЉкОй кGкљй‚клЉкїкљйpйљйОйљйїкїклакљйљйGк кЉкЇлїкл‚кОйОйљй кїкллїкОйОйљйОй клакакGкОйљйљйљйакїкЉкїкљйОй кљйљйакакїк‚к кGкGк кЉкїкакакОй к к—йGкЉкЉкЉк кйpйОй—йЉкїкЉкак—й5й—ййОйЉк‚к‚к кpйpй—йpйGкл‚к‚к—й—йљй—йљйакїкїкакОй—й кљй‚клакїкGкљй кљйGкїкакїкак—й—й—й—йОйЉкGк‚кљйpй—й5й—й‚к‚к‚к кpйpйОй5йОйїкЉкакљй5йОйpйpй кЉк‚кGкpйpйpйpйљйакЉкЉкGкpй—йљйpйGкакЉкїкљйОйљй—йGклакїк‚к—йОйљйGкакак‚как к—йљй—йОйакЉкак‚к—йОйОйОй какакїкGкОйОй—йОйїкЉкЉкGк—йОйљйОйЉклЉкїкGкОй кљйљйллакїкGк кGкљйЉкYллYл‚кОйОйОйљйїкакЉкакљйОйОйОй‚кїкїкYл‚к—йљйљйОйїкїкакак—й—й кљйGкїкакл‚кљйGкОйљйїкїк‚кЉкОй—йОйОй‚клЉкЉкGкљйGкљйОйЉклїкакОйpйљйОйGкїк‚кЉкЉк—йљйОйОйЉклїкл кОй кОй кїкллїк кGк кљйл€ллл‚кљй кљйGк€ллїкїкGк кGк кїклїк€л‚кОй кљйGклYлYлл кОйGкљй‚кYлакїкЉкGкGкљй каклїклGкGк кGк‚кЇлллак кЉк‚к‚кYлYллїкGк к к какЇлYл€лакGк‚к‚к‚кл€л€лл‚к кGкGкак€лYлЇлїкGкGкGк кїк€лїкл‚кљйGк кGкYллїкЉк—йљйљйљйїклїкYлЉкGкGкљйЉк€лллл‚кљйОйљйЉкїкїкл‚кОйљйОй кYлYллїкGк кЉк кЉкЇлїкYлGк—й кОйљйYллллGк кGк‚к‚клЉкакЉк—йОйОйљйYллїкїк‚кОй кљйак€лїкYлакGкОй кGкак€лYл€л‚кљйGк‚кїкЇлїк€лїк к кGкЉкл€лл€лЉк кљй какYлїкYлїкљйGк к кYлYлл€лЉк‚к‚к какЇлЇлYлYлGкGкGк кYл€лакїкЉк‚к‚к‚кЉк€лYлYлYл‚кљйGкGкакYлаклЉкљйGк кGкYлакGкак кОйОйОйЉклїкїкак—йОй к‚к€лYлллљйОйGкGкл€ллYллљйЉк‚кОйїкллYлЉк к‚кGкакYлїклЉк кљйљй кїкYллл‚кОй кGк‚клакакЉкОйGк кGкYл€лїкYлЉк к‚к‚кїкYлYлYлл кGкGкGкїк€л€л€лїк кGкGкЉкYлYлYлїкGкGкGк кїкЇллYлЉк кGкљйљйYллакїкGк кGкGкак€ллл‚кљй кGк‚кYлYллYлGк к кGклYллYлакGкЉк‚кGкYлYлл€л‚к к кљй‚к€лїклїкGкGк к‚кїкїкїкл кОй кОйGкїкллакљйОй кљйакYлїкакљйОй кљйGкллYлYл к кGкGкYл€лллЉк‚кЉк к‚кYлл€ллGкљй кљйЉклак€лакОй кљй‚к€ллYлїкљйљйОйОйакYлїкїкЉкљй к‚к‚к€лYлїклGкљйљй‚какYлYллакљйљйљй‚к€лYлїкакљй—йљйОй‚клакYлїк к к к кллакїк кОй кОй‚кYлакїкЉкОй кОйОйЉклакл‚кљйљйљй‚клллакљй—йљйљйЉклаклGк—йОй—й кллїкїк кОй к какYлллЉкљй кљйGкYлїкїкїкGкОйљйљйЉк€ллYлакљйGкљй кYлYлїклGкљйGкGкаклїклЉк—йљйGкљйїкЇлакак кљй к кїк€лллїкљйОйљй кїклYлYлЉк к к‚какЇллYлл к кGк‚кл€лїкїк‚кљйGкGкЉкYлїкYлл кGк к‚кYлYлYл€лЉк кGк‚кїктл€лл€лGк к‚к‚кЇлЇлYл€лїкGк‚кЉкїк€лллYлЉк к‚какYлЇлYл€лЉкљй‚к как€ллYллGкљйGк как€ллЇлакљйGкGкЉкYллллЉкGк‚кGкїк€ллллљй к кљйYл€ллYл‚к‚кљйGкїклYлYлак—йОйљйGк€лЇл€лYлакОй к кЉкYллїкїк кGкЉкGкїк€лYл€лакОй‚кGкЉк€ллллGк кGк кллакїк‚кљйљй к‚к€л€лYллGк к кљйаклїкїк‚кОйОйљй кїкїкакЉк кљйљй какYлYллакОй кGк‚к€лYллл кGк к какYллYлїк к‚к‚к‚к€лллл‚к‚к‚к‚кл€лYллYлОй кGк‚кЇл€лїкїкGк кGк кїкYллYлл кљйGкGк€лЇлYлYл‚кљй‚кЉкакЇлYлYл€л к к к‚к€лЇлЇл€лак кЉк кЉктлYлллGк‚кЉкGк€лЇлYлYлак к‚к‚кїк€л€лЇллакGк‚кЉкYлтлYл€лїкGк‚к к‚к€л€л€лYл‚к‚кЉкЉк€л мЇлтлYлGк‚к‚кЉк€ллїкYл‚к к‚к какЇлїкYлакљй кGк‚какYлїкїк‚кОйљйОйак€лYлЇлл к кGкGклYлїклЉк к‚кGкїк€лYл€лл кGк кљйлYллЇлЉк к к какЇл€лYллљй к‚к кллл€лакОй кљй‚кллYлїкGкОй кGклїкаклЉкОйљйљй‚клїкYлYл‚кGк‚кGкїкллїк‚кљйGкGк‚кYллїклЉкљй‚к‚какYллYлЉкљйGкGкЉкYллїклGкљйљйљйакYлл€лїкљйGкGкGкїкYллYлGкОйGкОй‚кYлїкYлак кОйОйљйїкакЉкакљйpйљйОй кїкїкакЉк кљй кљйїкYллїк‚кљй кОй‚кїкакїкакОй—йОйОйакїкЉкїкGкОй кОй кїкЉкакїкОйОй к—йЉклакїкGкОй кОйљйЉкакЉклљй—йљй—йїкїкллЉкљй—й—йљйлакїкїк кpй кљйЉкYлакїкакОй к кљйллакїкЉкОй к каклїклакОй к к кYлллYл‚кОйGкОйЉклїкїкакљйОй к кїклЉкакЉкpйљйОйGкакЉкїкакљй—йОйОйакЉкЉклGкОй кОйGклакїклОй—й кљйакїкїкїкЉкОй кОй кYлакЉкак к кљй—йїкїкакїкЉк к кОйGкак‚кЉкїк кљйЉкGкЉкYлїклїкОйGкОйљйїкїкїкYлЉкљйљйљйЉкакїклЉкљйОйљйGкїкакакак‚кОй кљйакїкЉкїкакљйљйљйОйїкЉкакїк кОй кОй‚клЉкЉкакљй—й кљйїклЉкїкGкОйљй—й кїкЉкакак кљйОй—йЉк‚к‚как‚к—й кОйљйїкGк‚кЉк—йpйљй—йакакЉкїкЉкОйљй—й клїкакак кљй кОйл€лYлYлакљйљйОй кYллїклGкGкGк клYлаклак к кљйљйїклїкакGк—йљйОй‚кїкїклак—й кљйОйїкїк‚кЉкGкОй к к‚клїклїк кљйљйљйакїкїкакGкGкак кЉклїкїкЉк кОйGкGкїкїкЉкїк‚кОйљйОйљйакїкїк‚кљйОйОй—йЉкїкакакЉкљй к к кл€лаклОй—й кОйЉкЉкїкл‚кљй к кљйїкЉкGкЉкОйОй кљйЉкл‚кїк‚кОйОй—йОйакїкЉкЉкљйОй кљйGклаклакОй к к кїкакакїкGкљйGкљйЉкYлїклЉкљйљй к клYлїкYлGкљйGкОйЉклїклїкљйљйGк—йGклїкак к—йОй—й клакЉк‚к—йpйОй—й кїкакак к—йОйОйОйЉкЉкак‚кОйОйОй—йОйЉкЉкGк5йpйОйОй—й‚кЉкЉкљйpй к к—йљйЉкак‚кОйљйљйљйОй как‚кљйОйОйљйљйОйЉкїкљйpй—й—й—й—йGкл‚кОйљй—йОй к—йЉклљйОйљйОйљйОйљйїкЉк—йОйљйљй кљйGкїк кОйљйљйљйОй клакОйОйљйљй к кЉкїк‚кОйљйљй кGкGкїкїкGкљйљй—й кОйакYлїкОйОйGк к кGклYлїкљйљйGкGкОй‚кЉкїкGкОй к кGк‚кYллїк к к к кљйїкїклїк кGк кGкGкYлїкїк кОйОй—й—йЉклЉкЉкљйљй кОйљйлакакЉкљй‚кљйљйїкїкїкїк кљйљйОйљйYлїкїкЉкpйОйОйОй‚какЉк‚кљйpй—й—й как‚какак—й—йљйОйакYлакак кpй кОйGкакакїклGк кљйљйак€лYлYлїкGк‚кОйGкїкЉкакл кОй кОйїк€лллак к‚к к‚к€лYлYлл‚к к кGкїкYллЇлYлЉкак‚кЉкЇл€ллYлЉкGкЉк кїкYлїклл кGкGкGк€лYлїкYлЉкОйGк‚какЇл€лїклGкGк‚к кїкYллYлїкGкЉк к‚кїкл€лYлљй‚кЉк‚кїкYлллак кGкGк‚кYллYллљйGк‚к‚кYл м€л€лакGкЉк‚к‚кЇлЇл€л€л к‚кїк‚кїкЇл€лЇл‚кGк‚к кGкїклїкїкљйGк‚кGкак€л€л€лакGкЉкGкGкYллYлYлЉк‚кGк‚кїк€лYлтлл к‚кGк‚кл€лїкYлЉк к‚к кїк€ллYллGкGк к кїкаклYлЉкљйЉкGкYл€лакїк€лЉкЉкGкЉкЇлYл€лYлл‚кЉкЉкYлЇл€лЇлЇлGкGкЉкїкЇлYл€лYлYлGк‚к‚кїкїклїк€лїкGкЉкїк мтлЇл€л€л‚к‚кїктлYлYлЇл€лYл кЉк€л€лЇлYл€л€лакGкакYлYлYлл€лYлЉкЉкЇлтлЇлтлЇлYлїк‚кЉк€ллYлїкллGк‚клЇл€л м€лЇлакЉклЇлЇлЇл€л€лYл‚к‚клтл€л0м€лтлїкЉк‚кYлЇлYлYл€лYлЉкакЉк мтлЇл€л€лак‚к‚клтл€лYлYл€л‚какїк€лЇл€лЇлЇллаклїк0мтлYл€лYл‚какЉкїкЇл€л€лЇлїк‚какЉк€л м м м€лЉкїкакактлЇлЇл мїк‚кїкЉк€лтлYлтл€лЉкїкакл0мтлтлЇлїкакакЉкYлЇл€лЇл€лакїкЉкїк м0мтлтлакЉкакЉкYлЇлтлтлїк‚к‚кЉкGкЇлтллтлл‚кїкакл мЇл€л€л‚к‚какЉкЇл€лYлЇлак кЉкЉкїктллтлYлGкЉк‚к‚к€лтлYл€лакGкЉк‚к‚к€лЇлтлЇлЉк‚какGкл€лакїкак кGк‚какЇл€лЇлЇл‚кGкЉкGкїктлїкЇлYл кЉкЉкЉкл€лYл€л‚кGкЉк‚кYлЇл€лтлYлGкGк‚к‚к€л€л€лЇл‚кGкЉкGкакЇллллGкGк‚кЉк€лЇлїклЉк кЉкакакЇл€л€лак‚к‚кGкЉклЇллYл‚к к‚кGк‚кYлYл€лїк‚к‚кЉк кїкЇлїк€лак‚как‚какЇлYл€лYл‚кGкGк кїк€лYлYлакGкGкGкЉкЇлЇлЇлЇл‚кGкЉк‚кактллл‚кОй‚как‚клYлїкл кGкљйљйак€лл€лак к‚кGкGклYлл€лGк к‚к‚к‚кYллYлїк к‚кЉкЉкYлЇлЇлЇлакакїкакYлтл€л€лYлGк‚к‚к к€л мYлЇлЉк‚кЉк‚кїк€л€лтл€л‚к‚кЉкЉкїк€лл€л‚кGкЉкЉкїкЇлYлYлYлGк кЉкакїкЇл€лЇлЉкљй‚к к к€лYлл€л кљйGкGкїкYллYлїк к‚кGкЉкYлYл€л€лакGкакакл м€л€лак к‚кЉкактлтлYлYлакGк‚к‚кл м€лYлїк‚к‚к‚кЉк€лЇлЇл€лЉк‚к‚к‚кл€ллYлYл к‚кЉкGк€лYлYлЇлак‚кGк‚кїкYлллл‚кGкGкGкллїклGкљй‚к к‚кYлYллїкGкљй кљйаклїкYл‚кљй кОйGкллллGкGк‚к как€лл€лЉк кGк к‚кYллакїкGк кGк кл€лллакОй‚кЉк‚кYллл€л‚к к кљйїктлїкYлїк‚к‚к‚к‚кл€ллл‚кОйљйОйGклаклак кGкGкGклYлїкїкGкљй‚кGкGкЇлYллїкGк‚кЉкЉкакЇл€лЇлYл‚как‚кЉкЇл€лЇлYл‚кЉк‚к кYлЇлYл€лїк‚какGкЉк€лYлYлЇл‚к‚к‚кљйакYллЇлYл‚какЉкактлЇлЇл€л‚к кЉкGкYлтллЇлак кGкGк‚кЇлЇлYлЇлGкЉкїк‚кYлтл€лтллGк‚к‚к кл€л€лЇл‚к‚к‚кGкактлл€лл кЉк‚кЉкYл€л€лЇлакGкЉкЉкакЇл€лЇлYл к‚кЉкакYл€лYлтлак‚какЉкїктлЇлЇл€л кїкЉкЉк€л€л€л млЉкЉкЉкЉк€л€лYлл‚кЉк‚к кїк€лл€лЉк кЉк‚к‚к€лYл€лYлGкакакЉкл€ллЇлл‚кїкGкактлYл€лЇлак‚кЉкGк‚кЇлYллЉкљйGкGкљйїкYлїк€лGк кGкљй‚к€ллYллљй кGкGкїклYл€л кљй‚кОй‚к€лїкYлакљй кљйОйлЇллл кОйакGкЉкЇлїклїк кGкGкЉкYлЇлYлЇлЉк кЉкGкЉкЇлYлYлYлGкакїк клтлYл€лЉкљй‚кGк‚к€лYллїкљйGк‚к кїк€лїкYлЉкОйGк‚к‚клYлYлїкGк‚к‚кGкїкЇлїк€лYл‚к‚к‚к‚кYлYллYл кОйGкљй‚кYлїклGкОйЉк кљйлYлYлYлGкGкGк к‚кYлїклїк к‚к к кїклїк€л‚кGкЉк‚как€лYлYлак кЉк‚кљйYл€лїклGк кGкGкак€лллїк к кGк какЇллл‚к какGк‚кYллїкїкGкЉкGкGкл€ллЇлЉк кЉк‚кЉктл€ллл кGкGкGкїкYллїкакGк‚кGк‚кYлїклYл к‚к‚к‚кїкЇлЇл€лїкGк‚кЉкGкїкYлїкл‚кGк‚кљйакYлїк€лакGк‚к‚к кYл€ллYлЉкGкЉк к‚кYллYлїкGкGкGк‚кл€лл€лл‚к‚кGк‚кYлїклл к кљй какYллл‚кОйљй к клїкїкл‚кЉк‚к кїкYллYл‚кљй‚к кGкYлYлїклљй к‚к кYл€л€л€л‚кљй‚к кGкYлYлYллЉкGкакGкакЇлл€лїк‚к‚кљй‚кллїклGк к к кїк€ллYлак к к кGклYлл€л кОй к к‚клїкл‚кОйGк кљйакїкїкакGкљйљйОй кYллїкїкОйљй кљйїклЉклGкљй‚кОйљйYллYлїк кGкGк‚клїклїкGк кGкGк‚кYл€ллїкљй к кОйЉкYлїклакpй к‚кGк€л€лYлYлљйОйGкGкЉкYллYлакОй‚кљйљй€л€ллYлGкGкGк как€ллYлакGк к кGкYлЇлтлYл‚кGкЉкGкЉкYллїкак к‚кGкљйакYлYлYлGк кЉк кGкYлакYлїк‚кGк‚к‚кл€ллл‚к‚к‚к‚к‚к€лYллїкљй кљй какЇлїклЉк кGкљйGкYлллак кGкGкљй‚кллїкGк кGк кGкYл€лYлYл к к к—йЉклїкYлЉк кGкЉкакYлллл кљйGк—йGклїклЉк к кљй какїкЉкл к к кљйЉк€лїк€лак к‚кGк‚клЇлллGк к к к‚к€лYлYлл к‚кGк кїкYлл€лGк к кљй‚кллїкакљйGкGк кYлYлYлYл к—й кљй‚кЇлл€лл кGк кљйЉкYлїкїкGкОйљйљй‚кYлYлYлл к кGкљйїктлїкл‚кљй‚к к кїкллїк к—й кGкакYлл€лЉк кGкGкGклллїкљйљй‚кљйGкYл‚кЉк‚кОй кОйљйллЉкїкљйОй кљйак€лїклЉкљйЉкGкљйїкїкЉклGкОй к кGкYлїкакак кљйОйљйЉклїкл‚кљй к к кїкЉкїкїкОйљйљй кл€лїкYл‚кОйљйGкакЇллїкл кљйGкОйїкYлЉкYл‚кљй‚к кЉк€лїклїк кљйGк к‚клакYлЉк к‚кОй каклакакGкОйGкљй‚к€лїкїкакљйGк кGкллЉкїк к—йљйОйGклїкїк‚кОйОйОйљйїклїклљй—йGкОй к€лїклЉкљй кљйљйїклаклGкљй кGкЉк€лїкїкак кGк‚к‚кл€лїкїк‚к к кОй‚клаклакОйљйљйОйакYлїкYл‚к—й к к‚клакакак к к кОйЉкYлїкл‚кОйGк кGкїклллGкОй‚кљйЉклїкYлакљй‚кGкљйYлллYлGкљй кљйЉклаклакљйGкGкGклїкакYл‚к к кОйGклакак‚кљй кљйОйакїкYлYлак‚кЉкGкак€лїклYлGк кGкGкїк€лїкYл‚к к кОй‚кYлакїкакОйљйљйОйїклакїкЉкљйљйОй клїкїкїкљйОйљй—й‚клаклакОйљйљй клїкакакОйОйGкљй‚какакїк‚кљй кљй кYлїкїкїкљй кGкљйЉкYллYлїкљй‚к кОйYлYлїкYлGкљй кОйакYлїкЇлїкљйGк кОйакїкїклGкОйGк кGкYлакїкGкљйљй кљйЉклакл кОйљйОйGкллїкЉкОй к кОйаклїкYлЉк кGкGк‚кїкакїкакОйљйGкљйак€лакл‚кљйGкљйGкллїкїкљй к к как€лїкYлЉкpй кљй к€ллїкYлGкGкGк кЉклллїкGк‚кGк‚к€лЇл€лл‚к‚к‚к как€лYл€лакљйGк‚к‚клЇлYлYл‚к к‚к кЉкЇлїкYлїк кGк‚к кїк€лллGкGк‚к к‚кЇл€лЇллGк к‚кGклЇлЇл€лЉкGкGк‚кїкЇлЇлYллGк‚к‚кGкїк€ллYлЉк кЉкакак€лYлYллGк кGкGкакYлЉклЉкОйљй к кїкYлїкл кљй к кїк€лїкYлак‚кЉкGкGкYлЇллл кљйGкGкакЇлYлYлЉк кGк‚к‚кїкYллYл‚к кGкGкЉкYллYлїк к к к к€л€лЇлЇлЉк‚к‚к‚каклїкYлакљй к к клЇлл€лЉкОйGкљй‚к€ллYлYлGкGкЉкЉкїклїкYлЉкљйGк‚к‚клл€лЇл‚к‚к‚кGклЇллЇллGкЉкЉк‚кЇл€л€л€лак кGк‚клтл€л€ллGкGк‚к‚кЇлтллYлGк кЉкGклЇлYл€лл‚к‚кЉкЉкЇлтл€л€лак‚кЉк‚кїктл€л€лл‚к‚к‚кGк€лЇлYлтлак‚к‚кGкакЇл€л€лYл кGк‚кGкїкYлїкЇлїкGкакGкакЇлYлЇлтлЉк‚кЉк‚к€л€лYлЇлак‚кїкакїкЇлЇлЇл€л‚к‚кЉк‚кYл€лл€лїкљй‚к‚кїкЇл€лЇлЇлЉк‚как‚клЇлYл€лак к‚кGк‚к€лYлїкYл‚к к‚к‚как€ллїкЉкGк‚к‚к‚к€л€ллл‚к к‚кGкакYлл€лYлЉкGкЉкакYл€лл€лакЉкакGкактл€лYлYл‚к‚к‚к‚кYлтл€л мл‚как‚клтл€л€лYлGк‚кЉкGклYлл€лакGк‚кGкЉкЇлЇлЇлYл‚кGк‚к‚кYлтл€л мїк как‚кЉктлтлЇлYлЉкакїк‚клтлYл€ллGкЉкЉкактл€лЇлтлЉкЉкїкЉкYлЇл€л мїк‚кЉк к‚кYлYл€лЇл‚к‚кЉк как€лYлЇл€л‚к‚к‚кЉктлЇл€л€лакакїкаклЇлЇл мYл‚кGкїкакYлЇлYлтлак‚кїкЉкїкЇлтлтллGк‚кGк‚к€л€ллл‚к‚кЉкЉкакЇл€лYл€л‚кЉк‚к‚кл€лYлтлакGкЉк‚какЇлЇлYлYлЉкЉкакЉкYл мтл млЉкакакакЇлЇл€лYлЉкЉк‚кGкактлYлYлЉк кGкЉк клЇл€ллGкЉкїкакл м€лтлл‚клїкЉк€л мтлЇлЉкїкакЉкактлЇл мїкЉкЉкGк кїк€лYл€л кGкGкљйGк€л€лЇлЉкЉкїкЉк‚какЇлYллGк‚кЉк‚кGклїклGкGк‚кGкљйак€лл€лGкGкGк кGкYлллЉкОйљйљйљйЉкїкїклОй‚к‚кGк‚к€лЇл€лїкGк‚к‚кЉкїкYлYлЇлЉк‚какакЉк€лтл€лYлGк‚к‚кGкакЇллYлїкGкак‚кGкYл€лYл€лGк кGкGкакЇллYллљйGкЉкЉк€лЇлYл€лЉкљй‚какл€л€л€лїк кGкGкGкл€лїкїк‚кОйGкљйЉкЇллYлїкљйОйљй кїклїклакОй кљй‚кYлїкYлл кљйЉкGклтл€лЇлYл кGкљй‚к€ллYл€л‚кGк‚к клYлYлЇлл‚к‚кЉкак€л€л€л€лЉкЉкЉкЉкYл€лYл€ллЉкЉк‚к‚к€л€лYл€лЉк кЉкGкл€лїкллОйљйGк кл€л€л€лЉк кЉк кїк€ллYлїкGкЉкЉкакЇлтл€л€лїкGкїк‚клЇл€лЇл€лGк‚кЉк‚к€л€лYл€лYл‚кЉкЉкїкЇл€лYлЇлЉк‚кЉк‚кYл€ллYлак кЉкGкЉктл€лл€лGкGк‚кGкїкYлїклЉк кЉк‚к‚клллїк‚к‚кЉкGкїкллYлїк‚кGкGкакЇл€л€лЇлїкЉкїкЉкYл€лYлЇлїк‚к‚кGк‚кYлYлYл€лакЉкак‚клЇлYлYллЉкЉкЉкїк€лЇл€л€лак‚кЉкGкїк м€лYлYл‚кЉкЉкЉк€лЇлYлЇлакGкЉк‚клЇл€лЇлтл‚к‚кЉк‚кYлтлЇл€лак‚какЉкЉк€лл€лYлGкЉкЉк‚как€лYл€ллGкЉк‚к‚кЇлЇл€л€лакїкїкїкЇлтл€лтлYл‚кїкЉк‚кЇлЇлYлЇлGкGк‚кGклтл€л€ллЉкакЉк‚кYлЇл€лЇл‚к‚кЉк‚кYл€лїкYлїк‚кЉкGк‚кYл€лYл€лЉк кGк кЉктлYл€ллGк‚к кЉклYллл‚к‚как‚кїкЇл€л€лїк к‚к‚кGкYлЇлЇлЇлЉкЉкакGкактлYлЇлЇлЉкакакЉк€л0м€лтлак‚какїкактлтлЇлЇлаклїкїклтл€лтл€лакїкїкЉкЇлтлЇлYлGкакЉк‚кїк€л€лЇлакЉкакїкактл мЇлтлакїкїкїкл мтлтлл‚какакїкЇл м€лYлGкGк кGклтлЇл мл‚кїкакЉкЇл€лYлЇлак кЉкЉкїк м€лЇлYлGкЉкљй‚к€л мЇлYлїк‚кЉк‚как€лл€лYл‚кЉк‚кљйYлтл€л€лак‚к‚к‚кЉк€л€л€лЇлЉкакакGкYлЇл€л мYл‚какЉк‚кЇлYл€лЇл‚кЉкакакYл€лYлЇлYл‚кЉкЉкЉкЇл€лYл€лЉк‚к‚к кл€ллYлл к‚кЉкЉк€лЇлллїкGкЉк‚какЇлYлYлл к к‚к‚к€лЇлYл€лак кЉкGкїктлYлYлYлGк к‚к какYлYл€л‚к к‚к кЉктл€лYл€лGк‚кЉк‚к€лYлїкЇлїкGкїкЉкактлЇлЇл€л‚кGк‚кGкYлЇлYлYлакGкGкGкGк€л€лЇлЇлакЉкїкЉклтлYл€лакGкЉкGкЉктлYлЇлЇлЉкGкЉк клЇллЇлл к‚кЉк‚кYл€лYлYлGкGк‚кљйЉкYл€л€лїкGк‚к‚кGк€лЇлл€лЉк кGкGкїкЇлYлЇллGкЉк‚кGк€лтлЇлЇлGк к‚кGкЉк€л€лYлYл‚к‚кЉкGклЇлYллЉкGк‚к‚к‚кYл€лYллGкGкGкGкллїкл‚кљй‚к кGкЇлYлїкYлGк‚кЉк‚кїктл€ллЉк кЉкGкGкYл€лYлYлGк‚кїкЉкYл м€лтллЉкїкЉкактл м м макїкїк‚кYлтл€лЇллЉкакїкЉк€лЇлYлтлїкЉкакЉклтлЇл мYл‚кЉкЉкЉкЇлЇлЇлтлакЉкак‚клтлтл м€лакакакак€лтл€лЇлЉкакїкЉкакЇл€лYлЇл‚кЉкЉк‚к€л0мтл млЉкїкЉкл мЇлЇлYлакллак€лЇлYл м€лЉкїк‚к‚ктлтлЇлтл‚кЉкакGк€лЇлYлЇлYлЉкїкЉкЉкЇлтлЇл€лGк‚какGкл мтл мYл‚кЉкакЉк€лЇл€лЇлЉк‚к‚кЉкл мтлтлYл к‚к‚к‚кл€ллYл‚кљйGкљйак€лYлЇллакакЉкGк€лтл€лтлак‚какЉкак мЇлYл€л‚кЉкак клЇлYл мїкGкЉкЉкЉкYлYл€лYлGк‚кGк кїкЇл€лЇлїкљйЉк‚кЉктлYлYл€л к‚кGк кYлЇлYл€лїк‚кЉк‚к‚к€л€лYлл‚к‚кЉкЉкYлЇл€лЇлак кGкGкЉкYллYл€л‚кGкЉк кЉк€лYл€лїк‚как‚кЉкЇл€л€л€лЉкGкGкGкакїкаклл к‚кЉк‚к€л€ллтл‚кGкЉкGкЉкYллллGкак‚кGкл€л€л€л‚кљйЉкGкак€лїклYл‚кGкGк кїкЇлїкYлЉк кЉк к‚к€лYл€лл к‚кЉкGкак€лїкYлак к‚к к‚кYл€лллGк кGк клЇл€лЇлїк кЉк‚кGк€лЇл€лYлGк‚кЉкGклтл€лЇлакGкакGк‚кЇлЇл€лYлGк‚кЉкGкакЇллл‚кљй‚кљй кYлYллYл‚кљй‚кGкїк€лїкYлл к к‚кљйлЇллYлGкGкакGк‚к€ллїкакОй кGкљйаклїкїкGкљйGк кЉкYлїкYлYлGк кGкљй‚кїкакYл‚кљй кОй‚к€лллл‚кGкGкљйакYлїклакљй к к кYл€лллGкGк‚кљйЉк€лл€лїкОй‚кЉк‚кYлYлYлYлЉк‚кGкGкак€лYлYлакGкЉк‚к‚к€лYлYлYл‚кGкGк кЉкЇллYлЉкљй к к кїклїклGкљйGк‚кЉкЇлYлYл€лGкGкGкGклЇлYл€лакGкЉкЉкїкЇлYл€лYл‚к к кGкл€ллл‚к кGкGкак€лYллїк‚к кљй кїктлїкYлїк‚кЉкЉкїк€л€лЇлЇлак‚к‚к клтллYлакљй‚к‚как€л€л€лYл‚кGкЉкGкл м€л€лїк кЉкЉкGкYлЇлллЉк‚к‚кGкакYлYл€ллGк кGк‚клллYлїк‚кЉк кЉк€лYлYлїк к‚кGкGкїкллYлGк кЉк к‚к€лллїкОйОй к‚кYл€лYлл‚кљйљй кљйлYлллљй к к кїклаклЉк кGкљй‚кїкїклїк к‚кGкљйак€лїклЉкљй‚кОй клллYлGкGк‚к какЇлл€лїкљй‚к кљйїкYллYлЉкЉкЉкGкакЇллYллљй‚кGкGкллїкїк к к‚кљй‚клакїкак кљйљй кл€лакYлGкљй к—й‚к€лїклїк кGкGк кл€ллЇлЉкGкGкљйGкїкакїкїк кОй к какYлїкл‚к—й кљй кїкYллл к кGк кїк€лїк€лїк кGкGк клїкYлYл кGкљй—йЉклїклЉкОй—йљй клїкакл кљйGк кЉк€лYл€лїк к‚кGк‚кYл€ллYл‚кОй кљй‚кYлїкYлЉкОй—йљйљйїклїкїкGкљй к‚к‚кYлаклакОйОйОйљйаклїкл‚к‚к‚кљйGк€лїкїклљйљйОйОйїкYлїкYлакљйGкGкакЇл€лЇлYл‚к‚кЉкGкїк€лїкYлїк к к‚к‚клYллїк кGк к как€лїклакљй кљй кYлїкїкл кGк кGкакYлїклак—йОйљй кїкїкакYлGкљй кљйЉк€лл€лїк кGк‚кGклллYл‚кGкЉк‚кїк€лYл€лYл кGкЉкGкYлЇлYлЇл‚кОй кGк‚кЇлYлллGк к‚к какYлакYлЉк к‚кљй‚кYллYлїк кGкGкљйЉк€ллYлак кЉкGкGкYлYллїкGк‚кGкGк‚кЇлYлYлакљйGк к‚кYлакЉкЉкОйљйљй—й‚к€лїклЉкљй кљйОйаклїкїкОйОй кљйGкYлїкїкЉкОйљйљй кїклїкл кОй к к‚клїкїк к—йОй—йОйЉклакакљй—йОйОйљйакЉкGкGк—йОйОйОйЉкакGкак кpйОй—йљйїкакЉкЉкОйљйљйљйакїкакїкGкpй—й—йљйїкакакЉк—й—йљйљй‚кїк‚кЉкGк—йОй к кїкакакїкљйОй кљйЉклЉкакЉк—йОйОйљйїкаклїк кљй кОйЉклїклЉкљйљй кGкллаклGкљйGк к‚к€лїклак—йљйОйОйлYлїклGкљйGкљй‚кYлакакїкОй—й кОйакїкїкл‚кљй кОй‚клЉкакЉкОйОй к кїклЉклакљйGк‚к‚к€лYл€л€лGк к‚к‚кїк€лллЉкљй‚кљй‚к€лллак к к кљйїк€лЉкїкакОй к кGкYлллYл к к кљйЉклїкїкЉкОй к кљйїкїкїкл кљйGк каклїклЉкОйОйљй кллакїк к—й кОйGкїкЉкїкЉк к‚к к клYлїклGк кGкљйакYлїклїкљйОйОйљйаклакїкGк кљйљй кЉкЉкЉкGкpй—й—й—й‚кїк‚кїк к кGкљйљйїкїкїкак кљйОй—йљйїк‚кЉк кpйљйОйОйЉкЉк‚к‚кОйОйОйОйљйак‚какљйpйОй кОйЉкїкЉкЉк—йОйљйОйGкл‚какGкОйљйљйОй‚кїкакакОйpйОйОйОйїкЉк‚к кpйОйОй—й‚кЉкGкїкОйОйGкОйљйЉк‚кЉкGк—йОйОйОйЉкакЉкл кљйGкОй клЉкакЉкљйљйОйОйакYлїкїкGкљйОй кЉкллїкак‚к к кОй‚клакЉкGк—йОйљйGкїклЉкакљйОйљйОй‚кїкакїкGк5йОйpйОйїкЉкакЉкљйpйљйљйGкак‚к‚кGкpйОй—й—й‚кЉк‚кЉкљй—йОй—й‚кїк‚какЉкpйОйpйОйїкакЉкакGк—йљйОйGкїкакїкїкљйљй кљйїкYлакїк к—й к к‚клаклакљйљй кОйакїкакYл‚кљйGк кЉкYлYллакљй—йОйОйЉкїк‚кЉк‚кљйљйљй‚клЉкїкїкGкљй к кЉклїкїкЉкљй кљй клакакл кОйGкОй‚кЉкЉкакGк—й—й к кїкYлакл кљй‚к какYлїклакОйОйљйљйїкллїк кљйGкљй‚кїкакїкакОйљйљйљйлїкїкакGкpйљйGкЉклЉкакїкљйљйљй клакЉкак‚кОйљйљйїклїкїкYлЉк к к‚клїкYл€лїкљйGк‚кїк€ллYл€лЉк кGкGкYлллYлїк к кљйGклаклїк кGк кљйЉкїкакїкакљйGкљйљйYлллл‚к кGк каклїкл‚к кGк кљйаклїкїкљй—йљй каклакл‚к—йљйљйљй‚кїкїкак кљй кљйGкYлаклакGкGк‚к‚кїк€лїкYлЉк кЉк‚каклїкYлїк‚кGкљйОйллаклGкGк‚к к‚клїкакїк кљй‚кљйаклЉкїкЉк—йљйљйGкїкакакїк к—й кљйЉкYлаклЉкpйљйОй кїкїкакл‚кОй кљй‚кїкЉкїкакОй‚кљйЉкЇлллYлЉкљй‚к‚кїкYллYлїк к кљй кїкYллYл‚кљй кљйакYлллїк‚кЉк‚кGкїклYлYлакGкЉкGкЉкYллYлл‚кGк‚кGкакїкїкYлакљй‚к кљйYлїклїкљйОйљйОйакїкакїкGк—йОйОйGклЉк‚кЉк—йpйљйGкЉкїкаклЉкОй кОйљйЉк‚кЉклљйОй кљйЉкYлїклЉкОйљйОйљйYлYлЉкакљйОйљйОй‚к€лїклакљйGкљйљйллакїк кљй кљйЉкЇлYлYлїк кGк‚кGкYл€лїк€лGкљй‚к кїкЇлїк€л€л‚кЉкЉк‚клЇлл€лакЉкакGкїк€ллYллGкЉкЉк кYл€лл€лак кGк к‚кYлYл€лYлGкGк‚кGклЇлYлYлак кGк к‚к€лYллYлGкљйGк кYл€лллак кGкGкЉк€лYлїкYлЉкЉк‚к клЇлїклїкGк‚к‚кЉк€ллYлYл кGк‚кGкак€л€лYлYлGкGкЉкЉкYлYлYлYл‚к кGк какЇллYлїк кGкЉк‚клЇлYлYл кGкЉк кGк€л€л€ллGкЉкЉк‚кїкYлYлYл к‚кЉкак‚к€лYлЇлак кЉкЉк‚кїк€лЇлїкGкакакЉк‚кїкЇлїк к‚кGк‚кїкЉкЇлYлGкGкЉк‚кGк кЉктл‚кЉкЉк к‚к к кYлYл к‚к кЉкак‚какYлGкGкGкљйљй к клYл кљйљй к кGкак€лакљй кGк к‚кGкл€л‚кљй кОйGкљй клїк‚кGкGкЉкGкљйлїкл кpй—й—йљйїклакїкОй кGк кGкїкїкл‚кpйљйљйљйЉкїкакак‚к—йОйОй кYлїкїкак кљйОйОйаклїкїкЉкpйљйpйљйYлЉкакак к—йљйљйїкакЉкїкЉк—йОйОйGкїкакїклGк—йљй—й‚какаклїк кљйОйОйак‚кЉкїкљйОй‚кGкЉклакак‚кљй кљйОйїкYлїкYлGкОйљйОй кїкакакЉкљйGкљй какїк‚как кОйљйљйGкїкакакљйpйљйОй—йGкакЉкакpйpйОй—й—йїкакакљй5йОй—й5й кЉкGкGкpйОйљйОйљйакїкїк‚кљй—йОй кїк€лїкл‚кљйљйОйGклїкакл кљй‚кљй‚какакїкакОйОй какакаклакЉк—йОйакакЉкакакїк‚к—йљйакакллїкЉкОйљйакакак€лїкїкGк—й кYлYллYлYлЉкОйљйGкЉкЉкакЉкакОйОйОйЉкїкїкакЉкЉкљй кGк€л€ллїкїк‚к кљйGк€лїкїклл к кљйїкллакїкGкОйљй кYллїклак к‚кGкак€л€л€лЇл‚к к‚кGкл€лYлYлак кGкљйактлYлYл€лїкЉкїкЉк€лтлYлЇлYл‚кЉкакакЇл€л€лYл‚кљйЉк‚как€лакїкїк к кGкЉкЇл€лYл€лЉк к кGклЇлл€лYлЉкак‚кЉк€лЇл€л€лїкGкїкЉклтлл€лYл‚какакЉкЇлтлYл€лїк‚кїкаклЇлYлYлл кGк‚к кїкYлл€лЉкОй к кGклYлYлл кљй к каклїкYлЉкОйGкGк‚кЇлYллїкGк кGк кЉкYлїк€лак к‚кGк к€л€лїкл кЉкЉкGкЉкYлїклGкОй к к кYл€лїкл‚к кGкGкЉк€ллYлЉкGк‚кGкGк‚кїкYллљйGкGк к кллїк к кGкОй—й‚кYллїкљй к кљй клYлїкGк—йљйGкљйGкYлакакљйОйОйОй клакїкак—й кљй—йаклакл‚кGк‚к‚к кYллаклGкGкGк какYлїкакGкОйОй к клїкакл кљйGкGкїклїк€лїкGкGкОй кїкїкYлYл‚к кGк какYлїкїк‚к кGкGк‚кл€лYлYл‚кGкЉк к‚кYллYлак кGк к какYллл‚к‚кGкОйGклїкYлл к к кGкак€лїкYлЉкОйGкљй‚кYлїкакак к кGк кїкYлїкїкЉкљйGкљйЉк€лїкїкак‚кљй кљйлYлллїкGкGкљйакYллїкYлGкОй‚к кллїклЉкљйGкљй‚кYлакїклакљй кОйакїкакїкїк кљйОйљйлакїкYл‚к—й кљйїк€лЉклл кGкGкЉк€лYлYллакљй к кїкЇлYл€ллGкЉкЉк‚кЇл м€л€лакGкЉкGкїкЇлYл€лYлЉк‚кЉкGкYлтлYл€лак кЉкGкак€лYлЇл€л‚к‚к‚к‚кл€лїкYлакљйЉкGкЉклїк€лYлљй к к кїкYлллЉкљйGкGк‚кYл€лYл€лЉк‚к‚к кл€лїк€ллGкак‚к‚кЇлYл€лЇл‚к к‚кGкїкЇллтлл к‚к кGк€лЇлYлЇлїк кЉк‚кїк€ллYлїкGк‚кЉкGклтл€л€лак‚кGкGкїк€ллYллОйОйакЉкл€лїкYлЉк кGк‚кЉк€л€л€ллGк‚к‚кGкYлЇл€л€лЉкљйGкGк кYллїклљй кGк клЇллYлак кљйОйљйїклакїкGк к к какYлл€лїкGкGк кGк€лЇлYллGкљйGк кЉкYлYл€лакљй‚к‚кљйл€лакYлGкљйGк кЉклаклакОйЉк‚к‚кYл€лYл€лак к к кїк€ллYлїк кGк к каклакл‚кpй к кОйїкакїкакљй кљй кїк€лїкл‚кљйЉкљйGкYлїкїкїк кGк кGкїк€лYл€лЉк к‚кљй‚к€ллїкYл‚кGк‚кGкїкЇлYл€лЉкОйљй к клYлYлYл‚к к кљй‚клїкYлЉк кЉк‚к‚кYлYлл€лЉкљйGк кЉкЇлїкYлїкОйGк‚кGкаклакл‚кGкЉк кЉкYл€лЇлакОйљйGкGкїк€лїкЇлЉкљй‚кљйЉк€л€л€лYл кЉкЉк кл€ллYл‚кљй‚кGкGкYллїкак к к к какYлїкл‚к к кљйЉк€ллллљйОйGк какYлакак‚кОйљйОйGкллїклљйОйљй—й‚кYлакїкЉк—йљйОйљйлYллїкљйОйљй—йGк€лїклакОйGкGк кллїкїк к—йљйљй кїкакїкак—йОйљйљй‚какїкїкGкљйGк кGкYлїкYлак к кљй кЉкYлїкїк‚кОйљй к кїкакїкакОйОйљй—йЉклЉклЉк к к к‚к€лYллїкљйGк‚кGкїк€лYллЉкљйGкGк‚кYл€лакл‚к‚к‚кљйак€лYлYлЉк к‚к‚кGклллYлGк‚кGкGкакYлYллакљйGк‚кGклYллYлљй к‚кљйак€лїкYлак к‚кGкGк€лЇлYл€лакGкGкGкЉкЇлYлYлакОйGкGкGклллYлЉк кGкљйGк€ллїкл к‚к кОйаклїкYлGкљй кљйЉкYлїкYлYл кGкGкљйаклїклЉк к кGкGкїкїкаклGк‚кЉк кїк€лYл€лїк к к к клYллл к к‚кGкаклакYлак—й кОй кїклїкл к к‚к к‚кїкаклакљйљйљйљйлYллYлGкGк кљйЉк€лїкакЉкGкGкGк‚клллYлљйљйGк—й кYлYллїкОйљй кљйакYлїклGкОйљйОй‚кYлллак кОйGк кїкЇлїклGкљй к к кїклїкакОйљй кљй‚кYлллGк—йGк к кYлYлYлYлGкЉкGкљйакYлллак кGк‚к‚клїкїкЇл‚к кGкљй‚кYлаклак к к к‚кYлYлYл€л‚кGк‚кОй‚кYлїкYлїк кGкGкљйаклакл к кGкљйЉклїкYлYл кGкЉк‚кYл€лїклGк к‚к‚к‚кYлллл кGкљйОйакYлак€л‚кОй‚к к‚кYллїкїк кGк‚к кїкЇллл‚к к кОйGклллYл к кGкGкYл€ллYлак к‚к к‚кїкYллїк кљй‚к кЉклїк€лїкGкGкGк‚кЇлYлYлYлљйGкGкљйЉкYлакїкакљйGкGк кл€лаклGк кGкљйак€лл€лїк к‚кGк как€ллYл‚кљйGкGкGкїкллїк кљйGк кїклл€л‚кљйGкљйGклакакакОй—й кљйак€лїкл‚кљй‚к кљйлакакакОйљйGкљйЉклакл‚кОй‚к к клїкїкл кљйGкљйЉкїкЉкакљйpйљйљйљйакакЉкакљйОйОйpй‚кїкїкYлак кGк кљйїкїкакїкGкОйОйОйGкYллакакОй кљй какїкакїкGкљй кОйGклакїк‚кљй кљйОйаклакїкGкОйGк кGкїкїклакGкљйGкОйGкїкЉкл‚кљй кОйGклїкїкїкљй—й кљй‚кїкїкл‚кОй кљйGкакЉкЉкЉк—йОйљй—йGкак‚какGкОйОй—йОйакЉк‚к‚к—й—йОй—йGкїкЉкїкGк—йОйpйОйЉкїкакїкљй—йљйљй кїкакакЉкpйОй—йОйЉкїкїкїкGк—йљй—йGкYлакїкЉкљйљй—йљйакїкїклGкљй кОй‚кллакак кљйОйОйакїкакакGкљйљй—йGкїкЉкакЉкОйОйОйОйакїкїкїк к—йљй—йљйакЉкак‚кpйpй—й—й‚какGкЉкљйpйОйОйОйЉкЉкЉкл кљй к—й‚как‚кїк к5йОйОйљйЉкакакЉкОй—й—й—й кїкЉкЉк‚к—йОйљйОйаклЉкїкљй—йОй—й‚клЉкїк‚к—й к кљйЉкїкЉкакљйpйGк кGкїкЉкїкЉкGк к кОй‚какїкакОйОйОй—й кїкGкЉкGкpй—йОйОй‚какЉкакGкОй к—йОйїкакЉкЉкpй—йљйpй‚кЉк‚кїкGкОйљйљй‚кллїкїкљй кGкљйакYлїкакЉкљй‚к к кYллYл€лGкљй‚к каклакYлак какЉкакYлYл€лYл к к‚кGкЉкYлллакљйGкGк кїкїкїкYлЉк кљйОйЉкYлїклакљй кОйљйїклакїк кљй кљйЉкїкакYлїк кGк кљйїкїкаклGк к кљйGкYллїкїк кОйОйОйакYлЉкYл‚кОй кљйGкїкакакл кОй кљйЉкYлакYлакљйљйљйGкYлїкаклљйљй кљйЉк€лллакљйGк‚какYллYллGк кGкОйGклЉклїк к к кGкїклїкл кљй кОйGкллїкїкљй к к клYлїклGкљйGкљйак€лїклЉкGкЉк к кїклїкїк‚кОйљйОй‚кЇлYлїкїкљй к к кїкYллYлЉкљй‚к к‚клаклїкљйОй кљйЉкYлїкYлЉкОйљйљйGклакїкак кGкGкљйак€лїкYлакљйGк к‚кYллллGк кGкљйGкYлїкллљй к‚к‚к€лЇллYлGкGк‚кОйGклаклакљйљйљйљйїкїк‚кїк‚кљйGкОйЉкЇллYлїкљйGкGкGкYл€лYлYлGкОйGкGкактлYллакљйљйGк кл€ллл‚кљй кљйGкYлакакл кGк‚кљйакYлїкл‚к к‚к к‚кYлллїк к кGк кїк€лYл€лакGк к кGклакїклљйОй к—йЉклакл‚кљй кљйGкллаклGкљйGкGкакЇллYл‚кљйGкGкЉклЇлYлYл‚кGк кљйак€лллїкGк‚к‚к к€лЇлїклGк к‚кGкЉк€ллЇллGк‚кGк‚клллYлЉкљйљйљйЉк€ллїклGкљй кљйїк€лYл€л‚кљйGкљйакYллїкYл кљйGкGклтлYллЉкGк кОй клїкYлл кљй кљйЉк€лїкYлЉкОйGк к клїкїкїк к кGкљйакYллYлїкGк‚к‚кGкYлYллYл‚кGк‚к какЇллYлїк кљйљй кїкYллл кОйљйљй кЉкаклЉкљй кОйGклллYл‚кљй‚к к‚к€лїклYлGк‚кЉкGкїклакYл‚кОйљйОйGклїкїкакљйљйGк кЉклакїк кОй кОйљйїкїкллОйОй—йОйакYлЉкїк‚к—йОй—йљйлїкїклљй к‚к какYлїкїк‚кљй кљй кїклакл‚кљй кGкЉк€лїкYлїк кЉк к кYл€лYл€л‚кљй‚к кGклїкYллљй‚кGкљйлїклYлакGк‚кGкЉклакакЉкОйОй к кїкїк‚кїкGкОйGкОйЉкYлакаклљй кGк—й‚как‚кїк‚кОйGкљй‚кYллїкїк к кGкљй‚клакYлЉкОйљйОй‚кYллYлYлGкGк‚к кЉкYлллакGкЉк к‚кYллл€лїкЉк‚к кїкYлакYлакGкGк к кїк€лїклGкљйљйОйакїкїклЉкљй кљй клллл кљйGк к‚кYлїклїкљйGк к клYлл€л‚к кЉк‚кактлYлYлїк кGкGк‚кYлYлYл€лїк‚кЉкGкЉк€лYл€лїкGк‚кGк‚клЇлYлYлак—йљйОйGклїк€лл‚к‚к‚кGкакYллЇлак к‚кљй‚клїклYл‚кљй кљйїкЇлл€лак кЉкљй ктл€лїкYлGк кGк к‚кYлYллЉкОйGкљй кїкїкїкЉкОйОйОй—йGкакакїк‚кљйGкGкGкллїкYл кОй кљй‚клакYлїкОй к‚к кїкYллл‚кљй кОй‚к€лYлYлїк к кGк‚кїкYлл€л‚к к кGкЉкYлYллл к кљйљйЉкллл‚кОйGк к кллYлїкGк к‚кGклЇлаклЉк кљй к‚кллакл кОй кљйакYлїклЉкGкGк к кYл€лYл€л‚к кЉкљйЉкYлYлЇллGк‚кGк‚кYл€л€лYлЉкљйЉкGк‚к€ллллGк‚кGкЉк€лYлYлЇл‚кљйGк‚какYл€лЇлYлGкGк‚кљйїкYлїкл‚к кGкGкЉк мYлYл€лљйGк‚кљйїк€л€лЇлЉкGкакЉкїкЇл€л€лYлЉкЉкЉкGкл€ллYлЉк к‚к к‚к€л€лYлл кGк‚кGкак€лYл€лїкGк‚к‚кїкЇлтлЇлYлGкGк‚к‚кл€ллYлл к‚к‚к‚кYлYлїкл кОйљйОй‚клїклакGк‚кGкљйїк€л€лYлGк кљйљйїк€л€лЇллGкGкЉкGклYллл к кЉк к‚к€ллYлїкљйGкGк клYлYл€лЉк как к‚кЇлYлYлл кGкGк кїкYлакїкЉк к кОйљйїкїкїкл к кGк кYллаклGкОйОй—й кYлYлYлYл‚кGк‚к к‚клїкл‚кpйОй—й—йЉк‚какYл кљйљйљйЉкYлYл€лЉкОй кљй кYллЉкл кљй кОй‚кллїкЉкОй—йљйљйїк€лакYлљйОй к—й‚клакїкакОйGкGк какїкїкл‚кљйGк‚кїкЇлїклл кGк кОйїкYллYл‚кљй кGкЉкYлїкЉкїкGкљй к как€ллYлїкљйGкљй к€лїкллљйGкљйОйакYлїкYлїкљйЉк‚к к€лYлїкYл‚кљй‚к к‚кЇллYлакGк‚к к какїкЉкїкGкОйGкОйGкYлїкYлЉк кЉкGк‚кYл€ллYлЉкљйGк какYллЇлл‚к к кGкYлYллYлЉкљй к кGк€ллYллGк‚кЉкЉкїкYлл€лЉкљй кОйЉкYлллїкGкОй кGкак€ллYлїкGк‚к‚кЉкЇл€л€л€лGкGкЉк‚клYлїк€лакљйGкGкGкЇл€лYлYлGк к‚к‚кїкYлл€лїк кGк‚какЇл€лл€л‚кGкЉкакїк€лYлYлYлљйGкGкGклYлYл€лЉкGкЉкЉкак€лYлYлак кGкGк‚к€лЇлYлYлл‚кЉк кЉкЇллYлл‚кGкGк клYл€лYл‚к к‚к‚кЉкЇллYллGк к кGкїк€ллYлЉк к к к‚клллїк к кGк кЉклїкYл‚кОйGк к клїкїкїк кGк к кЉкYлллак к‚к‚к‚к€лYл€л€лGкGк‚к кїкЇллYлїк кGкGкакYлYлYлл‚к‚к‚кGкЉк€лYлYлїкGк‚кGк‚кл€ллл‚кGкGкGкЉкYл€л€лїкGк‚кGкGкYллїкYлЉкљйGк кGкYлYлллЉкGкGк‚кYлЇлYлYлак к‚кGкЉкЇлYл€лЇлЉкакЉкGкYлYлYл€лЉк кGк к‚кЇлYлYл€лGк‚как как€лYл€лак как‚к‚к м€л€л€лЉк‚какЉклтл€л€лакљй‚к кGкYллYлЇлЉкGкGкGкакYлл€лїкGк‚к‚к‚кллїклGк к‚к кЉк€лYлЇлл кGк‚к‚кYлYллYлЉкљйЉкаклЇл€лЇлYлGк‚кЉк‚кYл€лYл€лакGк‚к‚как€лYлЇлЇлЉк‚к‚кGклЇл€л€лЉкљйGкGкакYлYллїк‚кЉкЉк‚клЇлYлЇлїкљйЉкЉкїкЇлЇлYл€лакЉкїк‚к€лтлYлтлYлGкїкЉк‚к€лYлYлЇл‚к‚какЉкYлтл€лYлл к кGк‚к€л€л€л€лакЉкак‚кYл0мЇлтлYлGкакїкакЇлтлЇл мак‚какGкак€лYл€лYл кЉкЉк‚к€лтл€л€лакЉкакЉкл м€л€лЇлЉкакЉкЉк€л€л€л€лїкЉкЉкGкак€ллЇлYл‚кЉк‚к‚кїкYлл€ллGкЉкGкЉктлYл€лYл‚к какїк€л0м€лЇлл какЉкактлтлЇлYл‚какYлакЇл мЇл€лїк кЉкак‚кЇлтлYл€лЉкGк‚к кЉк€лYлїкак кЉк‚к‚к€ллYл€л кљйGкљйакYллYлїкGк‚кGк кYллїкЇлЉкљй к кЉк€лYл€лїкљй‚к‚к‚клЇлЇл0мїк‚к‚кЉкакЇлЇлїк€л к‚кЉкGкYлYлYл€л‚кGк‚кљйЉкЇллYллОйGкЉкЉкаклллакGк‚кGкЉк€лллYлGкGк‚к кЉкїкЉклЉкОйGкGкЉкЇл€лїкYл‚кЉкЉкGкYлЇлYлЇлл‚кЉкGкакЇл€лYлYлакЉкЉкGкїкЇл€л€ллЉкGк‚кЉклЇлYл€лЉкGкакGкак€лїкYлYлЉкGк‚к‚к€лЇлл€лЉк кЉкGкактлYл€ллGк к‚кGкїк€л€л€лЉкGк‚кљйак€лїкїкYл‚кљйGк кїкЇлYл€лїк кGк‚кЉк€ллїкїкљй кGкљйакїкЉкл‚кОй‚кљй‚кллYлл кОйGкљйакЇлYлYлакОй к‚кЉкYллїкїк кОйљйОйакYлллЉкљйљйљй кллїк€лGкљй кљйЉклаклїкљй к к клYлїклGкљйGкОйGкYллYлакљйљйљйОйЉклакакљйpйОйОйљйїкакакЉк—й к кОйїклакїк кОй кљйакYлїклак к к кљйїкYлїкYлљйpйGкОйGк€лїкїкїкљйљй‚кљйїкЇллYллGк к кGкYлллїк‚кљйGк кЉкЇлYллакљйGк‚к‚кїкїкїкЉкОйљйљй—йЉкYлЉкак‚кОйљй к кллYлYл кОй кљйGкїкакYлїк к кОй кїкЇлYлл‚к—йљйОйЉк€лїклЉк к кGк кїкYлл€лїкGк‚к кЉкYлYл€лYл‚кGкGкЉклYлл€лак‚к‚кЉкак€лYлYлл кGкGкGк€л м€лЇлїкљй к‚кЉкYллїкїкGк‚к‚кљйЉкїкїкYлЉк кЉкGк‚кллїкак к к‚к кЉклллакљйљйGк‚кллаклGкљй к—й‚клллїкGк‚к к кїкYлїклGкОй‚к какЇллYлYлGк‚к к‚ктл€лYлЇлакGк‚к кЉк€лл€ллљйGкGкљйїкYлак€лакљйGкGкЉк€ллYлYл‚кЉкGк кїк€лїклЉкљйGк кЉк€лYллл кGк‚кGкїкYлїкл‚кОй к кЉкYлYлллGк к кОйЉкYллYлакљйGк‚к‚к€лЇлYл€лGк к‚кGкакЇллїкакОй кGкGклYлYллGкљйљйљй‚кYлїкYлЉк—йљйљй кїк€лYлл кљй к кGк€ллїкакљйљйљйGкїкYллл‚кљйGкGкЉк€л€лYлл к к к кїкЇлYлYлЉкљйGк к‚кЇлYл€лл кGк‚к‚клЇллЇлYлGк‚к к‚клYллїкGкGкGкGкакYллїкак к кGкЉкллYллљй к‚кGкЉк€ллYлЉкОй к кGклYллїк к кGкОйЉк€лYлYлакGк к к‚кYлYлYл€л‚к к‚к кЉк€ллYллљйGк‚к клYлїкл‚к кGкљйакЇлїкллОй к кОйїкYлїкїк‚кљй кОй‚кYлллїкОй кЉкљйїкYлїкїк‚к кљйОй‚кYлYллїк к к‚к‚клYлїкїкЉкОй кОйGкїкакакїк кОйљйљй‚кїклїкЉкОй кGкGкYлYллYлGк кGк как€лл€лакGк кGкак€лтллYл‚кGкGк кЉк€лYлYлл‚к‚к‚к‚к€л€ллЇлЉк кЉк‚кїктлл€лYлљйакак‚к€лЇл€л€л‚к к‚к‚какYлYлYллGк‚к‚к‚кїкYлYлYлак к кGкактлYлYлЇлакЉкЉк‚кYл€л€лЇлак к‚кGкїкЇллYл€л‚к‚к‚к кYл м€лЇллGк‚кGк‚к€лYллYлЉк‚кGкGклYлїк€лїкGкак кGк€лллYл к‚к‚к как€ллYлЉк—йGкGкGкїкакЉклGкљйGкОйЉк€ллYлїкGк к к кллллак кGкGкЉктлYлYлл кљй‚кGклYлїк€лакОйGк кЉкЇл€лYллGк‚кGк как€л€лїк‚кљй кGк кїкїкYл€лљйљйљй—й‚кYлакїк‚к—й кљйОйїкїкїкл кОй кGкак€ллYлакОйЉк к‚кЇллїкїкОйљйGкОйЉкYлїклакљй к‚к‚к€лЇлYлYлGк кЉк‚как€лYлїкак кGк‚кGкYлYлл€лGкљйGкљйак€лїкїкак к‚к‚кЉкЇлYлїкл‚кGкGк кЉкЇллYллљйGк к кл€ллYл‚к кGкGкЉкЇл€л€лїкљйљйGкGкаклллЉк к‚кGкGкллакїк кљйGк кл€лїклGкОйGк‚кGклYл€ллљй к‚кљйЉкїкаклакљйљйљй клYлїкл к кGкљйЉкYлїкYлЉк кGкљй кїкYлакакGкљйОй—йGклїклїкљйGк кОйЉкїкЉкакGкОйОй—йGкYлакак‚к—йљйљй—йакЉкGкЉкОйpй—й—йОйакЉкакїкљйљйОйљйаклїкїк‚кОй кОй кїкакїклљй к‚кљйїкYллїк‚кљй кљй клїкїкїкОйљй кљйЉклакїкЉкОйGкGк кYллїкYл‚к‚к‚к кЉкYлаклїкОйљй к кллїклљйОй к—й‚кYлїкYл‚кљйОйОйљйаклїклGкљйGкљй‚к€лїкїкакОйGк‚к кЉкїкакYлGк кGкОй кїкакїкїкОй кGкGкллїкїк‚кОй кљй клYлYллGк кGк‚кллл€лЉкљй кGк клїкаклGкGкGкљйЉкYлїклїкљйGк к кYллакYлGкОйGкОй‚кYлїклGкОйGк кGкїкYлїкїк кОй кљйЉкYлакїкакОйљйљй клакакЉк кОйОй—йљйакЉк‚кGк5й—йОйОйЉкак‚кЉк кОйљй—йGкYл‚к‚кЉкpйљйљйОйЉкЉкЉкак‚к—йОйОйGкакакакакОй—й кОй‚кїкакїк‚кљй кОйGкакЉкакЉкОйљйGк каклїкїкGк—й кОй клїкїкїкљйљйљйОйаклаклакљй кОй клїкЉкїкОйљйGк—й‚как‚кїк‚к—й кОйљйлїкакакљйљй кљйЉклакїкїкОй кљйОйїклїклGкОй кљй какаклЉкОйОйљйОйлYлакїк кОй кљй‚кYлїкYлакљйљйљйљй‚как‚кїкGкОй кљйGкакЉкїкакpй—й кОйЉкїкакYлGкОйОйpйљйїкак‚кїк‚к кGкљйЉклЉкїк‚кОйљйљйљйл€лл€лGк кGкљйакYлїкYлЉкљй к кGкYллллGк к кљйЉк€лаклакљйGкљй кл€лакак к к кљйакїкїк€лїкљйGк‚кGкїк€лїкYлЉк‚кGкљйЉкYллYлакљй к к кїкYлакїк‚кОй кОйљйїкакакїкљй к к—йаклїкYл‚к—й кОйGкYлЉкїкакљйљй к какYлїкYлЉкОй кљй‚к€л€лYлл кGкGкљйЉклїкYл‚к—йGк к к€лYллїк к к кљйаклаклак кGкGк кYллакїкGкGкЉкЉкак€лл€ллЉкЉкGкЉк€лЇлYлїкљй кЉкљй‚кYлYлЇллGкЉкЉкGк€л€лYл€лакЉкїк‚кїктлЇлЇлл к‚кGкљй€л€ллтлак к‚кGкЉкYллакакљйљй кљйЉкYлYл€л‚кОй кGкЉкЇлYллїкљйОй кљйак€лїкїк‚кОй‚к к‚к€ллллGк кЉкGклYлїклЉкОй кљйGкYлYлїклGкљй‚к кїктлллїкGк‚к к кїкллYлак‚кЉкЉкак€лYллЉкGкGк к кїклакїкЉк к кљй‚кYлл€лYл к‚к‚к кл€ллYлЉкљй‚к к‚кYлїклYлGк‚кЉк‚к€лYлїк€лЉк кЉк‚кЉкЇл€л€л€лGк‚к‚к‚кYлЇллЇлак кGк как€лYл€ллЉкакїк‚клтлYлЇлл‚кїкЉкакЇлЇлЇллак‚кGк‚кїк€лYл€лїкGкЉкЉкЉкЇл€л€лЇлакЉкакакYлЇлYл€лYл‚кЉк‚кЉкЇл€л€лЇл‚к какGкл€лYлYлл кЉк‚кGк€лYлакYлакЉкакЉкл м€лЇл€лЉк‚кЉкGк€лтлYлЇлакGкакакїктлYлтл€лGкЉкЉк кл€лл€лЉкGкЉкЉкїк0мтл€лтлакЉкакакЇлkмЇл м€л‚какїкYлтлтлтлYлЉкЉкЉкЉк€лтлЇл€лак‚кGк кGк€лYллЇлїк‚к‚кGклтлЇлЇлYлакЉкGкЉк€л€лYлYлЉкЉкїк‚кїктлYл мYл‚кЉкЉкЉк€лЇл€л€л‚кGкЉк‚кїктл€л0м€лакакїкакЇл мтл макЉкїкЉкYл0м€лтлїк‚кЉкЉкак€л м м млЉкЉкЉклЇлЇлтл€лакїкЉкакYлтл€лтллЉкакЉклЇлтлЇлЇлЉкЉкїкGкYлтл€лЇлYл‚кЉк‚кїктл€лYлЇлЉк‚как‚клтлYлЇлл‚кGкGкЉкYл€лYлYл‚к‚кЉк‚как€ллYлYл‚к‚кЉк‚к€лYлїкл‚к к‚кGк‚к€лYлYлїкGкЉкЉк‚кYлїкїкYлGкљй кљйGкYлїклYлGк‚к‚кGклЇллYлЉкљй‚кGкаклYлЇлл‚кЉкGк‚кл€лїклЉкGкЉк к‚клїкYллGкљйЉк как€лллGкОйGк к‚кYллYлл к к‚к‚клтллYлЉкGк‚кGк‚кЇлYллл‚кGк‚кGкакYллЇлїкGк‚кGкGкYл€лYл€л‚к‚к‚кGкЉк€лYл€ллакакЉкакл€л€лЇлакGкЉк кЉк€лYл€лїк какЉк‚кYлЇлYл€л‚к к‚кGкЉкYлл€лїк кGкGкЉкYл€лакYлЉкGк‚к к‚к€лYлYллGк‚кGк клЇлYл€лак‚кЉк‚к‚кYлЇлYлїкОй‚кЉкGкїкYлїкїк‚кОйGк к‚кЇл€ллїк к к‚к как€лллGкљйGк кЉкYлїклл‚к кGк кЉк€лїк€лак кGкљй‚кYл€ллл‚кGкЉкЉкїкЇлїклакGкЉк‚кЉклYллїкљй кGк как€лYлYлак кGк‚как€л€лл€л‚кљйGкGкак€лллл кљйљй‚к€л€лYлЇлак кGк‚кЉкYлллYлљйљйGк кл€лYл€лЉк‚к‚к‚кл€лYллYлGкGкGкGкYлYлїкЇлак к‚кљйЉкллYлYлЉк‚кGкGклЇлYлYлїкGкЉкGкЉкЇлЇл€лYлакЉкакакїк мтлЇлYл‚к‚к‚кЉкЇл€лYлтл‚к к‚кЉклтлл€лYл‚кЉк‚как€лЇлтл€лакЉкЉкGкл€лак€лак к к кGкакYллYл‚к к‚к‚как€л€лYлYлакак‚кGкЇлЇлїк€лЉк к‚кGкЉкЇлYлYллGк‚к‚кЉкYл€лYлЇлїк кGк‚какYлЇлЇлYлGк‚кЉк‚кл€лл€ллGк‚к‚к‚к€л€л€лл‚к‚к‚к кYлЇлїк€лїк к‚к кљйлYлїкYл‚к кGк к‚к€лїкїкл к‚к‚кЉк€л€л€лЇлGкОйGкљйЉкYлаклїк кGкGк‚кYлYлYлтлакGкЉк‚кїк€л€лЇлл кGкGкGклYллЇлїк‚какGкїктллYлYл‚кGкЉкGкYл€лїк€лакGкЉк‚кЉктл€лYл€лЉк‚кЉкЉкл€л€лЇллGкЉкGкЉк€л€л€лYл‚кGк‚кGклЇлYл€лїк кЉкGкЉкЇлYлYлYл‚к‚кЉкGкїктлYлЇлл как‚к‚к€л€ллYл‚к‚какGкїкYлYлтлїк кЉк к кїкYлл€л‚к кGк кЉктлYллїк к‚к‚кЉк€лЇл€лYлЉкGк‚к‚клЇлYл€лYл‚кЉкакGк€л€ллЇлЉк кGк как€лYл€лYлGкЉк‚к‚клЇл€л€лЉк к‚к кЉктллллљйGкЉк‚клYлїкYлакGк кОйGкYл€лїкYлGк‚кЉкGклYллYлЉкОй кGкGкЇл€л€л€л‚кGкЉк‚как€лїк€лYл‚какакїкЇлYлЇлтлЉк‚кЉк‚кїк€лYл€лїк кGкGкGкYл€л€лЇлїкїкЉк‚клтлYлтлЇлGк‚к‚к‚кYл€лYл€лакGкЉкЉкїктлYл€ллGк‚кGкGкYлЇлYлYл‚кљйGк кЉк€лїкїкїк к к кљйЉклакYлЉкGкЉкЉкЉкYлYлл€л кGк‚кљйлYлакYлакОй‚кGкGкYлYллYл‚кЉкакGкїк€лїкYлакљй‚к‚кGк€лYлїк€лGкGкЉк кїк м€лЇлакGкЉкЉкїкллYлYл‚кGк кОй‚кYлакїкак кЉк‚кЉкЇлтлYлЇлакGкЉк как мYл€л€лGкЉкак‚клYлакїкGкљйGкљйЉк€ллллGк к‚кGкл€лакYлЉкОй‚кGкЉкЇлллл‚кGкGк кїк€лїкYл‚кљй‚к‚какYлллYл‚к кGкGкакYлїклЉк к кGкGкїкYлїкїкОйљйЉкљйЉклакїкЉкљй кљй к€ллїкYлGкGк‚к‚кл€л€л€лїк как‚кGкYл€лYлYлакљй кљй‚кYлакїкакљй кGкGкYлYлакїк‚кљйGк к‚кЇлл€ллGк‚кGк‚кYлЇлYлYлакGкЉк‚как€ллYлYл кGк‚кGкїклл€лакGк‚к кЉк€л€ллYл‚к‚кЉкGклYлїкYлЉкљй кљйЉкYлллїк‚кGк‚к‚кїк€лYлYлакGкЉк‚кактл€лтлЇлїкЉкЉкЉкYлЇлЇлтлак кЉкЉкакЇлYллYлЉк‚кЉк‚кїк€ллЇллGкЉкGкGкYллїкYлGк кЉкGкїк€лYл€лл кЉк‚к‚кЇлЇлYл€лїкGкЉкЉкл€л€л€лYл какЉкGк€лтл€лтллЉкїкакїкЇл€лтлYл к‚какЉклтлтл мїк‚какGк‚кYлллл кGк‚к‚кYл мЇлЇлїкGкЉкGкакЇл€лYлYл‚кGкЉкGкакЇллYлЉкGкЉкGкак€лтлЇлтлЉк‚как‚клЇлЇлтлYл‚кЉк к‚к€лYлїкЇл‚кGкакGкактл€лтлYлЉкакЉкЉк€лтл€лЇлїкак‚к‚кїкЇлтлЇллЉкакЉкЉкЇл€ллтлїкGкЉк‚кл м€лЇлYл‚какЉк‚кYлЇлл€лак кЉкЉкЉк€л€лYлYлGкЉк‚к кл€лYлЇлак какЉкЉкYллYлл кGкакGкїктлYлYлл‚кЉкGк‚кЇлYл€ллGкGкGкЉкїкYллYлїк к‚кGкЉкЇлЇлYллGкGкЉк какЇлYл€лїк к‚к к‚кїкЇл€лЇлакЉкїкЉкїкЇл€л м€лGкїкакактлтл€лтллакакїк€лkм мЇл€лакаклїкЇл0мЇлЇллїклакYл0м€л€л€лЉкакїкакЇлЇлYлkмYл‚кїкаклтлтлтлтлакакїкЉктл мЇл0м€л‚кїкїкїктлтлЇл мїкЉкакЉк€лтлYл€лYлакїкЉкїктлтлЇлЇлакЉкїк‚кYл мЇл м€лЉкакЉкЉктлтлЇл€лак‚кїкакЇл’мЇлтл€лЉкїкїкїкЇлЇлЇлтлїкЉкакЉкYлтлЇлтл€лаклллтлтл0м0мYлакакЉкїк0м м мтлаклїкїк м м мkмYлЉкїкЉк‚кЇлЇлтлЇлGкЉкЉкЉк€л мYлЇлїк‚какGкак м€лYлл кGк‚к‚кїк€лYл€лїк‚какЉкїкЇлтлтлтлакЉкЉк‚кYлЇллYлYлЉкакЉкак€лЇлЇлЇл‚кGкЉк‚кYл м€лЇллЉкїкЉкакЇлЇл€лЇлЉк‚к‚к‚клЇлYлЇлл‚к‚к‚к‚кYл€лYл€лЉкGк‚к как мYлYлYл‚кЉкЉкЉк€л€лЇл€лакЉкЉк‚как мЇл€лїк‚кЉкGкЉк€лтлЇлЇлїк‚кЉк‚кїк м0м м€л‚кЉкЉкЉк€лтлЇлЇллакїкЉкактлЇлЇл€лакЉкЉк‚к€лтл€лтллаклакїктлтлтлЇлЉкакакЉкYлЇлYлЇлїкGкїкакЉкЇлтлЇлЇлЉк кЉк‚кл мЇлЇлїкGкїкак‚к€лЇлYлЇлак‚как‚клтл€лЇлїкGкЉк‚кЉктлЇл€л€лЉк‚кЉкЉкакЇлЇлЇл€л‚кЉкакак€л мтл млакїкЉкїк мЇл€лYл‚кїк‚кGкYлЇлYлЇлак‚кЉкЉклЇлЇл€лЇлакїкїкакЇл м€лЇлїкGк‚к‚как€л€лЇл€лGк кЉк‚клЇлл€лакGк‚кљй‚кЇлYлYлYл‚кЉкакGкакЇллYлїкGкЉкGк‚к€лЇлYлYлЉкGк‚к‚клЇлYл€лакGкЉкЉкакЇлЇл€лЇлак‚кЉкЉкїкЇлYлYллGк‚кЉкЉкЇл0мYлYлGк кЉк‚какЇлYл€л€лGк‚к‚кGкYл€лYлЇлакЉкїкЉкЉкЇлYлллGкGк кGкїк€лYл€лїк‚как‚как€ллYл€л кGк‚к‚кYлYлїкYлЉкGкак‚как€лYллл‚к кGкGклтлYлЇлак‚какакактлЇлЇлЇлGкакЉк кїктлллл кЉкЉкЉк€лЇлYлЇлакакЉкЉкYлЇлл€лYл‚какЉк‚кЇлтлYлYлак‚к‚к‚кYлтлYл€лYлЉкЉк‚к‚кЇл€лл€л‚к кЉкЉкїкЇлYл€лл‚как‚к‚к€л€лл€лак‚какЉкїкЇл€ллYлGк‚кЉкЉкл€л€лЇлЉкGкїкGкЉк€ллЇл€лGк‚к‚к как€лїк€лїк к‚кGк кYлллYл‚кGкGк как€лїк€лїк какGкGклYлYлYлакЉкЉк‚кЉкYлїклїкљй кGк‚клYлYл€лЉк‚кЉк каклїклЉкљй к кЉкYлYлїкл кGк‚кGкакЇлYлYлїкљй к кљйїкакЉкл‚кљйGкљй‚кYл€лЇлїк кGкGк‚клYлл€лакGк‚кGкїк€л€лYлїк кЉкЉкGк€лЇлYлЇлак‚к‚к‚какЇлYлYлакљйGкGк кYл€ллYлЉк к‚к‚какYлл€лл‚кЉк‚кGклYлYлЇллGкљй‚какЇлЇлYлYлGкGк‚кGкїк€ллЇлїкљй‚к‚кGк€лYллYлGкGкGк как€лYлYлак к‚к к кYлYлїкYлЉкЉк‚кGкакYлїкYлїкљйGкGк клYлл€л‚к какGкїктлллYлGк‚кGк кYллакYл‚кGк‚к кGкYлYлYллGк кGк‚клYлїклЉкљйGкGкакYлл€лл к‚кGк клYлл€лакљй‚кљйGк€ллл€л‚к‚кЉкGкл€лл€лакGкЉк кGк€лллYлGк к к клтлYллЉкљйЉк к‚к€л€л€лл‚кGкакGкїкЇлїклакљйGкGкGклїкYлYлGкОй к кGкYлллїк‚к‚кGк‚к€лYллYл‚кљйGк к‚кYлїкїкак кGкљй кл€л€л€ллЉк‚к‚кїкЇлYлYлїкGк‚к к клYллЇлак‚к‚кGкаклYлYллљй к‚кGкїк€лїк€лїк к‚к‚кЉкЇл€лYллGкGкЉкGкYлтллїкЉкљй кGкGкЇлЇлYлїкљйGкGкљйЉклакїкЉкОйљйљй клїкакYлљйОйGкљйЉк€лллїкљйGк‚к‚клYллYл‚к кGк какYлл€лак‚кЉкGк‚клллїк‚к к‚кGк‚к€лллїк кљйGкљйїкYлл€л‚кGкакЉкакЇлтл€л€лЉкЉкакаклЇл€л€лак кЉкGк‚кЇл€ллYлак кGк кїк€ллЇлл‚как‚кактл€л€лYл‚кЉк‚кGкїктлЇлЇлак какЉкЉк€лЇл€л€л‚к‚как‚кл€лYл€лїкGкGкGкGк€лYллYл‚кGкGк‚какYл€лЇлYл‚кЉкЉк‚к€лЇл€лЇлакGкакакYлkмтлтлЇлїкїкак‚кYл мтлтллЉкакакїкЇлтл мЇлЉкакЉкЉк€л мтл мїк‚к‚к‚как€лYллїк кGк кGк€лЇлYлЇлак‚к‚к‚кїкЇлYл€лYлGк‚кЉк‚кYлЇллтллGкакGкакЇлл€л€лЉкЉкЉкЉкїк€лYлЇлЉкљй‚кGкак€лтлтлЇлїк‚какаклтлYл€лл‚как‚как€лллYлЉкЉкак‚кактлтлтлYлGкGк‚кЉкЇлYл€лЇл‚кЉкЉкљйЉк мЇлYлл кGк‚кЉктлЇлYл€лЉкОйGк‚кЉкїкїклЉкљй кGк каклЉклЉкGкGкљй‚кYлллYл к‚какGкїкЇл€лЇлл‚кЉк‚какYлYл€л€л‚кЉкЉкGкYлЇлїк€лїкGкЉкЉкЉкЇлYл€лYлGкGк‚кGкїк€лYл€лїкGк‚кЉкЉк€лYлYлЇл‚к‚к‚кGкїк€лYл€лакGкGкGкGкYлYлїкл‚к к кљйЉкЇллYлїк кЉк‚к‚клллYл‚кGк кОйЉклак€лїкљйЉк кљйаклїкїкЉкGк кљйЉк€лїкакакљй к кљйакїкаклGкОй к к‚кYлакїкїкОй к кљйїкYлЉкакGкОй‚кОйGкYллїкYл‚к к‚кGкаклYл€лGк к‚к к‚кYллаклGк к кљй‚кллYлїк кGк‚к‚к€л€лYлYл к‚какGкїкYлл€лїк к‚к‚как€лYлїкYлGк к‚к кїк€ллллGк‚к к кл€лл€лЉк кЉк кЉк€лл€лYл‚кЉкЉкЉкYл€лл€л‚к кЉк‚кїк€лллл кGкGк клЇлYлл‚к кЉк‚кGкYллYллGкGкGк‚кїк€ллYлак к‚к‚к‚к€лллл к к‚к какЇлїкYлл кGк‚какЇлYлїкїк к кGкGклYлл€л€л‚кЉк‚кЉкYлYлYлYл‚к кGк как€лїклїкљйЉкакЉкYлЇл€л€лЉк к‚кGкак€ллYллљйGк кGкїкYлїкл‚кљйЉкљйGкYллYлїкGк‚к‚кЉкл€лл€л‚к какЉкїктлYл€лл кGкЉкGкїкЇллЇлакGк‚к‚какYллЇлYл‚к‚кGк‚клЇлYлЇлїк‚как‚к‚к€ллYллGкакGк кYлтл€лтлл‚какGк‚к€л€л€л мЉкGкЉк‚клЇл€л€ллGкЉкЉкЉктллYлтлЉкЉкак какЇлл€лїкGк‚кGкЉк€лYллЇлЉкљйGкGк‚кYллїкакљйGкGкGкYл€л€лЇлакљй к кЉкЇлYлYлїк к‚к‚кGк€лтл€лYлЉкGк‚кGк‚кYлакїкYл кGк кљйїклїкYлЉк‚кЉкЉклЇлЇлЇлYлGк‚кЉк‚кYлтл€лтлакGк‚кGкЉкYл€л€л€лЉкЉкGк кл€лYлYлакљй‚кGк к€л€лYл€лїкЉк кGкЉкYлYлYлїкGкакЉк‚к€лтлYлYлакGкЉк‚кїк млЇлл‚к‚к к‚кїкYллYлЉкGк‚кGкїкЇлYлллGк‚кЉкЉкYлYлYл€лак кЉкЉкїктл€лтлЇл‚к‚к‚к‚к€лYллЇлЉкGкGк к‚кYллллGк кљй‚кYлYллYлїкљй к кЉк€лYл€лYлљй к‚кGклYл€л€лакОй к к кYллЉкакљй—йљйљй‚клїкакЉк—йОйљйљйлYлїкїк кљй кGкЉкYлїкїкакљй кGкGкYл€лїкїк‚к кGк кЉкYлїклїкОй кОй кїкаклїкљй—йљйљй‚кYллл‚к—йљй—йљйаклїкїк‚кљйGкљйЉклакїкакљй к кОйаклакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакакак