Aller au contenu

Chaînes de caractères⚓︎

Manipuler les chaînes de caractères⚓︎

Les chaînes de caractères

En Python, les textes, ou chaînes de caractères sont notés entre guillemets ou entre apostrophes. Par exemple "Bonjour je suis un texte" et 'Moi aussi je suis un texte' sont des chaînes de caractères.

Une chaîne de caractères peut ne contenir aucun caractère. On dit que c'est la chaîne vide et elle se note "" ou ''.

On peut concaténer deux textes de la manière suivante :

>>> "bon" + "jour"
'bonjour'

On peut aussi multiplier un texte par un entier pour le répéter. On obtient un nouveau texte :

>>> "bla" * 3
'blablabla'
>>> "bla" * 0 # (1)!
''

  1. Si on multiplie par 0, on obtient le texte vide.
Vous pouvez expérimenter dans le terminal ci-dessous

Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)

Accéder aux symboles d'un texte

Il est possible d'accéder à n'importe quel symbole d'un texte à l'aide de sa position, appelé indice ou index.

Les symboles sont numérotés de gauche à droite, en commençant à \(0\).

Pour obtenir un symbole, la syntaxe est TEXTE[INDICE].

>>> "avion"[0]
'a'
>>> "avion"[1]
'v'
>>> "avion"[2]
'i'
>>> "avion"[3]
'o'
>>> "avion"[4]
'n'

On peut aussi y accéder en comptant de droite à gauche, en commençant à \(-1\), puis \(-2\)... :

>>> "avion"[-1]
'n'
>>> "avion"[-2]
'o'
>>> "avion"[-3]
'i'
>>> "avion"[-4]
'v'
>>> "avion"[-5]
'a'

Bien entendu, on peut aussi utiliser les crochets après le nom d'une variable contenant une chaîne de caractères :

>>> un_texte = "Bonjour"
>>> un_texte[0]
'B'
>>> un_texte[-2]
'u'

Si on donne un indice en dehors du texte, on obtient un message d'erreur. Vous pouvez essayer de taper "avion"[5] ou "avion"[-6] dans le terminal ci-dessous.

Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)

⚠ L'erreur IndexError veut dire que l'indice donné ne correspond à aucun symbole du texte.

Boucles et chaînes de caractères⚓︎

Itérer sur un texte

Les chaînes de caractères sont des itérables. Cela veut dire qu'elles peuvent être utilisées dans des boucles.

Avec une boucle, on peut parcourir les textes symboles par symboles :

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Évaluations restantes : /∞

Écrire des fonctions qui existent déjà

Nous allons voir comment écrire des fonctions qui existent déjà en Python. L'objectif est surtout d'avoir des exemples simples. Bien entendu, lorsqu'on écrit une fonction qui existe déjà en Python, on ne doit pas utiliser la fonction existante dans son code.

Calculer la longueur d'un texte

On peut combiner boucles et tests pour (re)programmer les fonctions de base pour les chaînes de caractères.

La fonction longueur permet de déterminer la longueur d'un texte :

def longueur(texte):
    n = 0 # (1)!
    for s in texte: # (3)!
        n = n + 1 # (2)!
    return n

  1. On dit que n est un compteur.
  2. On rajoute 1 à chaque tour de boucle, donc à chaque nouveau symbole.
  3. La variable s n'est jamais utilisée dans la suite. On aurait pu la remplacer par la variable anonyme : for _ in texte.
Exemples
>>> longueur("un")
2
>>> longueur("deux")
4
>>> longueur("trois")
5
Vous pouvez tester la fonction ci-dessous

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Évaluations restantes : /∞

Cette fonction existe déjà

Dans Python, la fonction len fait exactement la même chose :

>>> len("un")
2
>>> len("deux")
4
>>> len("trois")
5

Tester l'appartenance à un texte

La fonction est_dans permet de déterminer si un symbole appartient à un texte :

def est_dans(symbole, texte):
    for s in texte:
        if s == symbole:
            return True
    return False

Exemples
>>> est_dans("a", "abc")
True
>>> est_dans("c", "abc")
True
>>> est_dans("d", "abc")
False
Vous pouvez tester la fonction ci-dessous

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Évaluations restantes : /∞

Cette fonction existe déjà

Dans Python, pour savoir si un symbole appartient à un texte, il faut écrire SYMBOLE in TEXTE :

>>> "a" in "abc"
True
>>> "c" in "abc"
True
>>> "d" in "abc"
False

Cela marche aussi pour tester si un texte est inclus dans un autre :

>>> "gre" in "tigre"
True
>>> "tige" in "tigre"
False
Sortie prématurée d'une fonction

On peut remarquer que si le symbole est dans le texte, on arrive sur une instruction return même s'il reste des symboles à regarder.

Dans ce cas, l'exécution de la fonction s'arrête sans faire les derniers tours de boucle. On parle de sortie prématurée.

Selon les goûts, certains préfèrent éviter une sortie prématurée, alors que d'autres trouvent que cela permet de rendre le code plus efficace et lisible.

Exercice 9

Écrire le code de la fonction nb_occurrences qui prend une chaîne avec un seul caractère symbole et une chaîne de caractère texte, et qui renvoie le nombre d'occurrences de symbole dans texte. Le nombre d'occurrences est le nombre de fois où symbole apparaît dans texte.

Indice

Vous devriez vous inspirer des deux exemples précédents. Il faut se demander si on a besoin d'un compteur et si on peut renvoyer le résultat avant d'avoir regardé tout le texte.

Exemples
>>> nb_occurrences("j", "bonjour")
1
>>> nb_occurrences("o", "bonjour")
2
>>> nb_occurrences("z", "bonjour")
0
>>> nb_occurrences(" ", "au revoir")
1
>>> nb_occurrences("a", "ananas")
3

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Évaluations restantes : 5/5

43908.43996.43997.43980.43993.43985.43988.43979.43928.43995.43988.43993.43979.43979.43909.43930.43980.43985.43976.43930.43910.43954.43908.43979.43981.43989.43989.43993.43978.43969.43910.44011.43991.43988.43981.43980.43985.43991.43990.43928.43934.43993.43989.43976.43907.43928.44010.43997.43989.43993.43978.43977.43981.43997.43979.43908.43927.43979.43981.43989.43989.43993.43978.43969.43910.43954.43908.43996.43985.43982.43928.43989.43993.43978.43987.43996.43991.43983.43990.43909.43930.43913.43930.43928.43979.43980.43969.43988.43997.43909.43930.43989.43993.43978.43999.43985.43990.43906.43913.43926.43919.43997.43989.43928.43913.43997.43989.43930.43928.43910.43954.43908.43996.43985.43982.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43930.43910.43908.43980.43993.43994.43988.43997.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43980.43993.43994.43988.43997.43930.43910.43908.43980.43978.43910.43908.43980.43984.43928.43995.43991.43988.43979.43976.43993.43990.43909.43930.43914.43930.43928.43995.43988.43993.43979.43979.43909.43930.43998.43985.43988.43997.43990.43993.43989.43997.43930.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43998.43985.43988.43997.43990.43993.43989.43997.43930.43910.90037.43928.44008.43978.43991.43976.43991.43979.43985.43980.43985.43991.43990.43928.43996.43997.43928.43995.43991.43978.43978.43997.43995.43980.43985.43991.43990.43908.43927.43979.43976.43993.43990.43910.43908.43927.43980.43984.43910.43908.43927.43980.43978.43910.43908.43980.43978.43910.43908.43980.43996.43928.43995.43988.43993.43979.43979.43909.43930.43988.43985.43990.43997.43990.43991.43979.43930.43910.43908.43996.43985.43982.43928.43995.43988.43993.43979.43979.43909.43930.43988.43985.43990.43997.43990.43991.43996.43985.43982.43930.43910.43908.43976.43978.43997.43910.43908.43979.43976.43993.43990.43910.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43913.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43914.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43915.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43916.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43917.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43918.43908.43927.43979.43976.43993.43990.43910.43908.43927.43976.43978.43997.43910.43908.43927.43996.43985.43982.43910.43908.43927.43980.43996.43910.43908.43980.43996.43928.43995.43988.43993.43979.43979.43909.43930.43995.43991.43996.43997.43930.43910.43908.43996.43985.43982.43910.43908.43976.43978.43997.43910.43908.43979.43976.43993.43990.43910.43908.43927.43979.43976.43993.43990.43910.43908.43995.43991.43996.43997.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43996.43997.43998.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43998.43930.43910.43990.43994.44007.43991.43995.43995.43981.43978.43978.43997.43990.43995.43997.43979.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43969.43989.43994.43991.43988.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43924.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43980.43997.43968.43980.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43906.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43995.43991.43989.43976.43980.43997.43981.43978.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43909.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43989.43985.43930.43910.43912.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43998.43991.43978.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43983.43930.43910.43985.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43980.43997.43968.43980.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43906.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43985.43998.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43909.43909.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43969.43989.43994.43991.43988.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43906.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43928.43928.43928.43928.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43995.43991.43989.43976.43980.43997.43981.43978.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43909.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43995.43991.43989.43976.43980.43997.43981.43978.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43923.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43989.43985.43930.43910.43913.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43978.43997.43980.43981.43978.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43995.43991.43989.43976.43980.43997.43981.43978.43908.43927.43979.43976.43993.43990.43910.43954.43908.43927.43995.43991.43996.43997.43910.43908.43927.43976.43978.43997.43910.43908.43927.43996.43985.43982.43910.43908.43927.43980.43996.43910.43908.43927.43980.43978.43910.43908.43927.43980.43993.43994.43988.43997.43910.43908.43927.43996.43985.43982.43910.43954.43908.43976.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43978.43997.43989.44007.43998.43993.43987.43997.44007.43984.43915.43930.43910.44010.43997.43989.43993.43978.43977.43981.43997.43979.43928.43906.43908.43927.43979.43976.43993.43990.43910.43908.43927.43976.43910.43954.43908.43976.43910.44027.43997.43980.43980.43997.43928.43998.43991.43990.43995.43980.43985.43991.43990.43928.43997.43968.43985.43979.43980.43997.43928.43996.43857.43986.43864.43928.43997.43990.43928.44008.43969.43980.43984.43991.43990.43926.43908.43927.43976.43910.43954.43908.43976.43910.44020.43993.43928.43979.43969.43990.43980.43993.43968.43997.43928.43997.43979.43980.43928.43981.43990.43928.43976.43997.43981.43928.43976.43993.43978.43980.43985.43995.43981.43988.43985.43856.43978.43997.43928.43906.43928.43908.43995.43991.43996.43997.43910.44012.44029.44000.44012.44029.43926.43995.43991.43981.43990.43980.43920.44011.44001.44021.44026.44023.44020.44029.43921.43908.43927.43995.43991.43996.43997.43910.43926.43908.43927.43976.43910.43954.43908.43996.43985.43982.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43930.43910.43908.43976.43978.43997.43910.43908.43979.43976.43993.43990.43910.43908.43927.43979.43976.43993.43990.43910.43908.43995.43991.43996.43997.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43976.43930.43910.43934.43999.43980.43907.43934.43999.43980.43907.43934.43999.43980.43907.43928.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43994.43991.43990.43986.43991.43981.43978.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43926.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43995.43991.43981.43990.43980.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43986.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43991.43930.43910.43913.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43976.43930.43910.43934.43999.43980.43907.43934.43999.43980.43907.43934.43999.43980.43907.43928.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43994.43991.43990.43986.43991.43981.43978.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43926.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43995.43991.43981.43990.43980.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43991.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43991.43930.43910.43914.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43976.43930.43910.43934.43999.43980.43907.43934.43999.43980.43907.43934.43999.43980.43907.43928.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43994.43991.43990.43986.43991.43981.43978.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43926.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43995.43991.43981.43990.43980.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43970.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43991.43930.43910.43912.43908.43927.43979.43976.43993.43990.43910.43954.43908.43927.43995.43991.43996.43997.43910.43908.43927.43976.43978.43997.43910.43908.43927.43996.43985.43982.43910.43954.43908.43927.43996.43985.43982.43910.43954.43908.43927.43996.43997.43980.43993.43985.43988.43979.43910
Exercice 10

Écrire le code de la fonction indice qui prend une chaîne avec un seul caractère symbole et une chaîne de caractère texte, et qui renvoie l'indice de la première occurrence (apparition) de symbole dans texte s'il y en a une et -1 s'il n'y est pas

Exemples
>>> indice("a", "abc")
0
>>> indice("c", "abc")
2
>>> indice("d", "abc")
-1

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Évaluations restantes : 5/5

43908.43996.43997.43980.43993.43985.43988.43979.43928.43995.43988.43993.43979.43979.43909.43930.43980.43985.43976.43930.43910.43954.43908.43979.43981.43989.43989.43993.43978.43969.43910.44011.43991.43988.43981.43980.43985.43991.43990.43928.43934.43993.43989.43976.43907.43928.44010.43997.43989.43993.43978.43977.43981.43997.43979.43908.43927.43979.43981.43989.43989.43993.43978.43969.43910.43954.43908.43996.43985.43982.43928.43989.43993.43978.43987.43996.43991.43983.43990.43909.43930.43913.43930.43928.43979.43980.43969.43988.43997.43909.43930.43989.43993.43978.43999.43985.43990.43906.43913.43926.43919.43997.43989.43928.43913.43997.43989.43930.43928.43910.43954.43908.43996.43985.43982.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43930.43910.43908.43980.43993.43994.43988.43997.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43980.43993.43994.43988.43997.43930.43910.43908.43980.43978.43910.43908.43980.43984.43928.43995.43991.43988.43979.43976.43993.43990.43909.43930.43914.43930.43928.43995.43988.43993.43979.43979.43909.43930.43998.43985.43988.43997.43990.43993.43989.43997.43930.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43998.43985.43988.43997.43990.43993.43989.43997.43930.43910.90037.43928.44008.43978.43991.43976.43991.43979.43985.43980.43985.43991.43990.43928.43996.43997.43928.43995.43991.43978.43978.43997.43995.43980.43985.43991.43990.43908.43927.43979.43976.43993.43990.43910.43908.43927.43980.43984.43910.43908.43927.43980.43978.43910.43908.43980.43978.43910.43908.43980.43996.43928.43995.43988.43993.43979.43979.43909.43930.43988.43985.43990.43997.43990.43991.43979.43930.43910.43908.43996.43985.43982.43928.43995.43988.43993.43979.43979.43909.43930.43988.43985.43990.43997.43990.43991.43996.43985.43982.43930.43910.43908.43976.43978.43997.43910.43908.43979.43976.43993.43990.43910.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43913.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43914.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43915.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43916.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43917.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43918.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43991.43978.43989.43993.43988.43930.43910.43919.43908.43927.43979.43976.43993.43990.43910.43908.43927.43976.43978.43997.43910.43908.43927.43996.43985.43982.43910.43908.43927.43980.43996.43910.43908.43980.43996.43928.43995.43988.43993.43979.43979.43909.43930.43995.43991.43996.43997.43930.43910.43908.43996.43985.43982.43910.43908.43976.43978.43997.43910.43908.43979.43976.43993.43990.43910.43908.43927.43979.43976.43993.43990.43910.43908.43995.43991.43996.43997.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43996.43997.43998.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43998.43930.43910.43985.43990.43996.43985.43995.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43969.43989.43994.43991.43988.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43924.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43980.43997.43968.43980.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43906.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43976.43991.43979.43985.43980.43985.43991.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43909.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43989.43985.43930.43910.43912.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43998.43991.43978.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43983.43930.43910.43985.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43980.43997.43968.43980.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43906.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43985.43998.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43969.43989.43994.43991.43988.43997.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43909.43909.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43906.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43928.43928.43928.43928.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43978.43997.43980.43981.43978.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43976.43991.43979.43985.43980.43985.43991.43990.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43976.43991.43979.43985.43980.43985.43991.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43909.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43976.43991.43979.43985.43980.43985.43991.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43923.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43989.43985.43930.43910.43913.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43978.43997.43980.43981.43978.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43925.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43989.43985.43930.43910.43913.43908.43927.43979.43976.43993.43990.43910.43954.43908.43927.43995.43991.43996.43997.43910.43908.43927.43976.43978.43997.43910.43908.43927.43996.43985.43982.43910.43908.43927.43980.43996.43910.43908.43927.43980.43978.43910.43908.43927.43980.43993.43994.43988.43997.43910.43908.43927.43996.43985.43982.43910.43954.43908.43976.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43978.43997.43989.44007.43998.43993.43987.43997.44007.43984.43915.43930.43910.44010.43997.43989.43993.43978.43977.43981.43997.43979.43928.43906.43908.43927.43979.43976.43993.43990.43910.43908.43927.43976.43910.43954.43908.43976.43910.44020.43985.43999.43990.43997.43928.43982.43985.43996.43997.43928.43985.43990.43996.43985.43995.43997.43908.43927.43976.43910.43954.43908.43976.43910.44008.43981.43985.43979.43977.43981.43997.43924.43928.43996.43993.43990.43979.43928.43988.43997.43928.43976.43985.43978.43997.43928.43996.43997.43979.43928.43995.43993.43979.43924.43928.43991.43990.43928.43982.43993.43928.43998.43993.43985.43978.43997.43928.43993.43981.43980.43993.43990.43980.43928.43996.43997.43928.43980.43991.43981.43978.43979.43928.43996.43997.43928.43994.43991.43981.43995.43988.43997.43928.43977.43981.43935.43985.43988.43928.43990.43935.43969.43928.43993.43928.43996.43997.43928.43979.43969.43989.43994.43991.43988.43997.43979.43928.43996.43993.43990.43979.43928.43988.43997.43928.43980.43997.43968.43980.43997.43924.43928.43991.43990.43928.43976.43997.43981.43980.43928.43981.43980.43985.43988.43985.43979.43997.43978.43928.43988.43993.43928.43998.43991.43990.43995.43980.43985.43991.43990.43928.43908.43995.43991.43996.43997.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43930.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43994.43930.43910.43978.43993.43990.43999.43997.43908.43927.43979.43976.43993.43990.43910.43908.43927.43995.43991.43996.43997.43910.43928.43976.43991.43981.43978.43928.43976.43993.43978.43995.43991.43981.43978.43985.43978.43928.43996.43985.43978.43997.43995.43980.43997.43989.43997.43990.43980.43928.43988.43997.43979.43928.43985.43990.43996.43985.43995.43997.43979.43928.43906.43908.43927.43976.43910.43954.43908.43996.43985.43982.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43930.43910.43908.43976.43978.43997.43910.43908.43979.43976.43993.43990.43910.43908.43927.43979.43976.43993.43990.43910.43908.43995.43991.43996.43997.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43996.43997.43998.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43998.43930.43910.43985.43990.43996.43985.43995.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43969.43989.43994.43991.43988.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43924.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43980.43997.43968.43980.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43906.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43998.43991.43978.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43985.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43983.43930.43910.43985.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43994.43930.43910.43978.43993.43990.43999.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43994.43930.43910.43988.43997.43990.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43980.43997.43968.43980.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43921.43906.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43995.43913.43930.43910.43931.43928.43920.43913.43921.43929.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43985.43998.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43980.43997.43968.43980.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.44003.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43985.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.44005.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43909.43909.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43969.43989.43994.43991.43988.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43906.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43995.43913.43930.43910.43931.43928.43920.43914.43921.43929.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43928.43928.43928.43928.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43978.43997.43980.43981.43978.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43985.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43995.43913.43930.43910.43931.43928.43920.43915.43921.43929.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.43928.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43987.43930.43910.43978.43997.43980.43981.43978.43990.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43925.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43989.43985.43930.43910.43913.43908.43927.43979.43976.43993.43990.43910.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43995.43913.43930.43910.43931.43928.43920.43916.43921.43929.43908.43927.43979.43976.43993.43990.43910.43954.43908.43927.43995.43991.43996.43997.43910.43908.43927.43976.43978.43997.43910.43908.43927.43996.43985.43982.43910.43954.43908.43991.43988.43910.43954.43908.43988.43985.43910.44023.43990.43928.43982.43993.43928.43978.43857.43976.43857.43980.43997.43978.43928.43908.43995.43991.43996.43997.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43930.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43994.43930.43910.43988.43997.43990.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43980.43997.43968.43980.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43908.43927.43979.43976.43993.43990.43910.43908.43927.43995.43991.43996.43997.43910.43928.43998.43991.43985.43979.43928.43988.43993.43928.43978.43997.43995.43984.43997.43978.43995.43984.43997.43924.43928.43996.43993.43990.43979.43928.43988.43997.43928.43976.43985.43978.43997.43928.43996.43997.43979.43928.43995.43993.43979.43926.43928.44020.43993.43928.43982.43993.43978.43985.43993.43994.43988.43997.43928.43908.43995.43991.43996.43997.43910.43985.43908.43927.43995.43991.43996.43997.43910.43928.43982.43993.43928.43976.43978.43997.43990.43996.43978.43997.43928.43979.43981.43995.43995.43997.43979.43979.43985.43982.43997.43989.43997.43990.43980.43928.43980.43991.43981.43979.43928.43988.43997.43979.43928.43985.43990.43996.43985.43995.43997.43979.43928.43996.43997.43979.43928.43979.43969.43989.43994.43991.43988.43997.43979.43928.43996.43981.43928.43980.43997.43968.43980.43997.43926.43908.43927.43988.43985.43910.43954.43908.43988.43985.43910.43908.43995.43991.43996.43997.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43930.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43980.43997.43968.43980.43997.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.44003.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43985.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.44005.43908.43927.43979.43976.43993.43990.43910.43908.43927.43995.43991.43996.43997.43910.43928.43995.43991.43978.43978.43997.43979.43976.43991.43990.43996.43928.43993.43981.43928.43979.43969.43989.43994.43991.43988.43997.43928.43977.43981.43935.43991.43990.43928.43997.43979.43980.43928.43997.43990.43928.43980.43978.43993.43985.43990.43928.43996.43997.43928.43978.43997.43999.43993.43978.43996.43997.43978.43926.43928.44027.43935.43997.43979.43980.43928.43988.43997.43928.43979.43969.43989.43994.43991.43988.43997.43928.43996.43997.43928.43908.43995.43991.43996.43997.43910.43980.43997.43968.43980.43997.43908.43927.43995.43991.43996.43997.43910.43928.43996.43935.43985.43990.43996.43985.43995.43997.43928.43908.43995.43991.43996.43997.43910.43985.43908.43927.43995.43991.43996.43997.43910.43926.43908.43927.43988.43985.43910.43954.43908.43988.43985.43910.44011.43985.43928.43995.43935.43997.43979.43980.43928.43988.43997.43928.43994.43991.43990.43928.43979.43969.43989.43994.43991.43988.43997.43924.43928.43991.43990.43928.43976.43997.43981.43980.43928.43978.43997.43990.43982.43991.43969.43997.43978.43928.43908.43995.43991.43996.43997.43910.43985.43908.43927.43995.43991.43996.43997.43910.43924.43928.43977.43981.43985.43928.43997.43979.43980.43928.43979.43991.43990.43928.43985.43990.43996.43985.43995.43997.43926.43908.43927.43988.43985.43910.43954.43908.43988.43985.43910.44011.43985.43928.43991.43990.43928.43993.43928.43980.43991.43981.43980.43928.43976.43993.43978.43995.43991.43981.43978.43981.43928.43997.43980.43928.43977.43981.43935.43991.43990.43928.43990.43935.43993.43928.43976.43993.43979.43928.43980.43978.43991.43981.43982.43857.43928.43908.43995.43991.43996.43997.43910.43979.43969.43989.43994.43991.43988.43997.43908.43927.43995.43991.43996.43997.43910.43924.43928.43995.43935.43997.43979.43980.43928.43977.43981.43935.43985.43988.43928.43990.43935.43969.43928.43997.43979.43980.43928.43976.43993.43979.43926.43928.44023.43990.43928.43978.43997.43990.43982.43991.43985.43997.43928.43996.43991.43990.43995.43928.43908.43995.43991.43996.43997.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43930.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43925.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43989.43985.43930.43910.43913.43908.43927.43979.43976.43993.43990.43910.43908.43927.43995.43991.43996.43997.43910.43926.43908.43927.43988.43985.43910.43954.43908.43927.43991.43988.43910.43954.43908.43976.43910.44027.43997.43980.43980.43997.43928.43998.43991.43990.43995.43980.43985.43991.43990.43928.43997.43968.43985.43979.43980.43997.43928.43996.43857.43986.43864.43928.43996.43993.43990.43979.43928.44008.43969.43980.43984.43991.43990.43926.43928.44020.43993.43928.43979.43969.43990.43980.43993.43968.43997.43928.43997.43979.43980.43928.43908.43995.43991.43996.43997.43910.44012.44029.44000.44012.44029.43926.43985.43990.43996.43997.43968.43920.44011.44001.44021.44026.44023.44020.44029.43921.43908.43927.43995.43991.43996.43997.43910.43926.43928.44008.43993.43978.43928.43995.43991.43990.43980.43978.43997.43924.43928.43979.43985.43928.43988.43997.43928.43979.43969.43989.43994.43991.43988.43997.43928.43990.43935.43997.43979.43980.43928.43976.43993.43979.43928.43996.43993.43990.43979.43928.43988.43997.43928.43980.43997.43968.43980.43997.43924.43928.43991.43990.43928.43991.43994.43980.43985.43997.43990.43980.43928.43981.43990.43997.43928.43997.43978.43978.43997.43981.43978.43928.43993.43981.43928.43988.43985.43997.43981.43928.43996.43997.43928.43908.43995.43991.43996.43997.43910.43925.43913.43908.43927.43995.43991.43996.43997.43910.43926.43908.43927.43976.43910.43954.43908.43996.43985.43982.43928.43995.43988.43993.43979.43979.43909.43930.43984.43985.43999.43984.43988.43985.43999.43984.43980.43930.43910.43908.43976.43978.43997.43910.43908.43979.43976.43993.43990.43910.43908.43927.43979.43976.43993.43990.43910.43908.43995.43991.43996.43997.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43976.43930.43910.43934.43999.43980.43907.43934.43999.43980.43907.43934.43999.43980.43907.43928.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43993.43994.43995.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43926.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43985.43990.43996.43997.43968.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43993.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43991.43930.43910.43912.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43976.43930.43910.43934.43999.43980.43907.43934.43999.43980.43907.43934.43999.43980.43907.43928.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43993.43994.43995.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43926.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43985.43990.43996.43997.43968.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43995.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43991.43930.43910.43914.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43976.43930.43910.43934.43999.43980.43907.43934.43999.43980.43907.43934.43999.43980.43907.43928.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43993.43994.43995.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43991.43930.43910.43926.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43985.43990.43996.43997.43968.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43920.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43979.43914.43930.43910.43934.43977.43981.43991.43980.43907.43996.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43976.43930.43910.43921.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43980.43930.43910.44012.43978.43993.43995.43997.43994.43993.43995.43987.43928.43920.43989.43991.43979.43980.43928.43978.43997.43995.43997.43990.43980.43928.43995.43993.43988.43988.43928.43988.43993.43979.43980.43921.43906.43908.43927.43979.43976.43993.43990.43910.43954.43928.43928.44030.43985.43988.43997.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43994.43930.43910.43934.43977.43981.43991.43980.43907.43934.43988.43980.43907.43976.43969.43979.43984.43997.43988.43988.43934.43999.43980.43907.43934.43977.43981.43991.43980.43907.43908.43927.43979.43976.43993.43990.43910.43924.43928.43988.43985.43990.43997.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43989.43930.43910.43913.43908.43927.43979.43976.43993.43990.43910.43924.43928.43985.43990.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43934.43988.43980.43907.43989.43991.43996.43981.43988.43997.43934.43999.43980.43907.43908.43927.43979.43976.43993.43990.43910.43954.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43999.43978.43930.43910.44014.43993.43988.43981.43997.44029.43978.43978.43991.43978.43908.43927.43979.43976.43993.43990.43910.43906.43928.43908.43979.43976.43993.43990.43928.43995.43988.43993.43979.43979.43909.43930.43990.43930.43910.43979.43981.43994.43979.43980.43978.43985.43990.43999.43928.43990.43991.43980.43928.43998.43991.43981.43990.43996.43908.43927.43979.43976.43993.43990.43910.43954.43908.43927.43995.43991.43996.43997.43910.43908.43927.43976.43978.43997.43910.43908.43927.43996.43985.43982.43910.43954.43908.43976.43910.44020.43985.43999.43990.43997.43928.43982.43985.43996.43997.43928.43985.43990.43996.43985.43995.43997.43914.43908.43927.43976.43910.43954.43908.43927.43996.43985.43982.43910.43954.43908.43927.43996.43997.43980.43993.43985.43988.43979.43910