Le scénario d'erreur qui m'a fait perdre 3 jours
Il y a six mois, je travaillais sur un modèle de détection d'anomalies pour notre système de market-making crypto. Je recevais cette erreur toutes les 5 minutes :
ConnectionError: HTTPSConnectionPool(host='api.binance.com', port=443):
Max retries exceeded with url: /api/v3/orders (Caused by
NewConnectionError(': Failed to establish a new connection:
[Errno 110] Connection timed out'))
RateLimitError: 429 Too Many Requests - Please make sure you
have access to this endpoint. Retry after 1000ms
Le problème ? L'API REST de Binance impose des limites de rate strictes (1200 requests/minute) et ne fournit pas de données order flow granulares. J'ai perdu 72 heures à胭友 (bāng wǒ) — pardon, à chercher une solution viable.
La révélation : TardisQoq (anciennement Tardis Exchange) offre des données tick-by-tick historiques pour 30+ exchanges avec une latence moyenne de 47ms et une disponibilité de 99.97%. Combiné à l'analyse par HolySheep AI, j'ai pu construire un pipeline complet en moins d'une journée.
Pourquoi le order flow est crucial pour le market-making
Dans le trading haute fréquence, le order flow représente le flux net des ordres d'achat et de vente. Un imbalance tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells tells