not really a note thing but: my name is pronounced with an /ɛ/. i felt this should be known. latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency atency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency latency