The Python exam consists in the following:

  • A lab project (developed between week 8 and week 14) - up to 100 points. Projects selection will be decided in week 8.
  • Lab activity - maximum of 8 points / lab (starting with lab2) => 8 x 6 = 48 points
  • Lab test (week 8) - up to 52 points
  • A course exam (week 15/16) - up to 100 points

The final grade for this exam is computed by applying Gauss curve formula on the final score (number of points) obtained by each student. The percentages proposed by ECTS ("top 10%, next 25%, next 30%, next 25%, lowest 10%") are used to transfer grades from one system to another and are based on the normalized distribution. The reality shows that the distribution of the scores obtained by the students following the evaluation does not always respect the normal Gauss distribution. For example, there are cases when 70-80% (or even more) of the scores received by the students are within the range [45-60]. Obviously, in these cases, one can not apply the same Gauss distribution as they will result in canceling the difference between someone with 80 points and someone with 60 points. For this reason, the ECTS percentages are only supported as a starting point in establishing the final grades; if the scores distribution is different than the normal one, the percentages will be adjusted accordingly.

Minimum requirements to pass this exam:

  • 120 points summed up from all tests
  • 30 points minimum at course exam
  • 30 points minimum at project
  • 30 points minimum from lab activity + lab test.

Grading:

  • Projects of type C:
    • 60 Points
      • Full Functionality
      • Git Support
      • Presented until week 11
    • 50 points
      • Full Functionality
      • Git Support
      • Presented in week 12
  • Projects of type B:
    • 80 Points
      • Full Functionality
      • Git Support
      • Git Features Updates
      • Presented until week 12
    • 70 points
      • Full Functionality
      • Git Support
      • Git Features Updates
      • Presented in week 13
  • Projects of type A:
    • 100 points
      • Full Functionality
      • Git Support
      • Git Features Updates
      • PEP documentation
      • Presented until week 13
    • 90 points
      • Full Functionality
      • Git Support
      • Git Features Updates
      • PEP documentation
      • Presented until week 14

Glossary:

Full Functionality = Means that every requirement described for the project has to be addressed in its implementation

Git Support = The project has to be uploaded to a GIT account (github) that is shared with the teaching assistant

Git Features Updates = If a project has multiple features (e.g. for the Total Commander Browser this will be the ability to copy file, the ability to delete files, etc), every feature has to be committed to Git in a separate commit (with a clear name) so that we can track the evolution of the project.

PEP Documentation = The entire project has to be documented according to PEP specifications.

Final observations:

Please share your Github project with your teaching assistant starting from week 9. Furthermore, announce your teaching assistant that you are ready to present a project with 1-2 days before the presentation. We will only grade if the previous described conditions are achieved (e.g. if you chose a project of type A you can only receive either 90 or 100 points - a partial project will NOT BE GRADED). Please keep this in mind when you are choosing the project category. We encourage you to try to present before the final moment when your type of project can be presented. If during a presentation, we find problems with a project and there is still time until the last moment your project can be presented, you will be able to re-present again (as long as we respect the final week when that project can be presented). Projects can only be presented to YOUR teaching assistant Before the presentation we will ask you to identify yourself (using the camera and an identity act). During the presentation the camera has to be ON. The grades that you received are not FINAL. In Week 14 - 15 we will check for plagiarism among the submitted project. If this case, the final grade for the lab exam will be adjusted accordingly.

Courses

  1. Introduction

    • Administrative
    • Python History
    • Variable
    • Basic Types
    • Numerical Operations
    • String types
    • Statemens (if, while, for)
    • Functions
    • Link: Course 1
  2. Sequances

  3. Key based containers

  4. Classes-1

    • Constructors
    • Data members
    • Methods
    • Link: Course 4
  5. Classes-2

    • Inheritance
    • Special methods
    • Context manager
    • Link: Course 5
  6. Exceptions

    • Exceptions
    • OS Module
    • sys Module
    • Link: Course 6
  7. Modules

    • Modules
    • Packages
    • Dynamic Code
    • Link: Course 7
  8. Regular expressions

  9. Common modules

    • time
    • hashlib
    • json
    • pickle
    • marshal
    • random
    • zip
    • Link: Course 9
  10. Networking

    • sockets
    • urllib module
    • ftplib module
    • smtplib module
    • Link: Course 10

Labs

Lab 2

Lab 3

Lab 4

Lab 5

Lab 6

Lab 7

Lab 2

  1. Find The greatest common divisor of multiple numbers read from the console.
  2. Write a script that calculates how many vowels are in a string.
  3. Write a script that receives two strings and prints the number of occurrences of the first string in the second.
  4. Write a script that converts a string of characters written in UpperCamelCase into lowercase_with_underscores.
  5. Write a function that validates if a number is a palindrome.
  6. Write a function that extract a number from a text (for example if the text is "An apple is 123 USD", this function will return 123, or if the text is "abc123abc" the function will extract 123). The function will extract only the first number that is found.
  7. Write a function that counts how many bits with value 1 a number has. For example for number 24, the binary format is 00011000, meaning 2 bits with value "1"
  8. Write a function that counts how many words exists in a text. A text is considered to be form out of words that are separated by only ONE space. For example: "I have Python exam" has 4 words.

Lab 3

  1. Write a function to return a list of the first n numbers in the Fibonacci string.
  2. Write a function that receives a list of numbers and returns a list of the prime numbers found in it.
  3. Write a function that receives as parameters two lists a and b and returns: (a intersected with b, a reunited with b, a - b, b - a)
  4. Write a function that receives as a parameters a list of musical notes (strings), a list of moves (integers) and a start position (integer). The function will return the song composed by going though the musical notes beginning with the start position and following the moves given as parameter. Example :
compose(["do", "re", "mi", "fa", "sol"], [1, -3, 4, 2], 2) 

will return ["mi", "fa", "do", "sol", "re"]

  1. Write a function that receives as parameter a matrix and will return the matrix obtained by replacing all the elements under the main diagonal with 0 (zero).
  2. Write a function that receives as a parameter a variable number of lists and a whole number x. Return a list containing the items that appear exactly x times in the incoming lists. Example: For the [1,2,3], [2,3,4],[4,5,6], [4,1, "test"] and x = 2 lists [1,2,3 ] # 1 is in list 1 and 4, 2 is in list 1 and 2, 3 is in lists 1 and 2.
  3. Write a function that receives as parameter a list of numbers (integers) and will return a tuple with 2 elements. The first element of the tuple will be the number of palindrome numbers found in the list and the second element will be the greatest palindrome number.
  4. Write a function that receives a number x, default value equal to 1, a list of strings, and a boolean flag set to True. For each string, generate a list containing the characters that have the ASCII code divisible by x if the flag is set to True, otherwise it should contain characters that have the ASCII code not divisible by x. Example:
x = 2, ["test", "hello", "lab002"], flag = False 

will return (["e", "s"], ["e","o"], ["a"]) . Note: The function must return list of lists.

  1. Write a function that receives as paramer a matrix which represents the heights of the spectators in a stadium and will return a list of tuples (line, column) each one representing a seat of a spectator which can't see the game. A spectator can't see the game if there is at least one taller spectator standing in front of him. All the seats are occupied. All the seats are at the same level. Row and column indexing starts from 0, beginning with the closest row from the field. Example:
# FIELD
[[1, 2, 3, 2, 1, 1],
 [2, 4, 4, 3, 7, 2],
 [5, 5, 2, 5, 6, 4],
 [6, 6, 7, 6, 7, 5]] 

Will return : [(2, 2), (3, 4), (2, 4)]

  1. Write a function that receives a variable number of lists and returns a list of tuples as follows: the first tuple contains the first items in the lists, the second element contains the items on the position 2 in the lists, etc. Example: for lists [1,2,3], [5,6,7], ["a", "b", "c"] return: [(1, 5, "a ") ,(2, 6, "b"), (3,7, "c")]. Note: If input lists do not have the same number of items, missing items will be replaced with None to be able to generate max ([len(x) for x in input_lists]) tuples.
  2. Write a function that will order a list of string tuples based on the 3rd character of the 2nd element in the tuple. Example:
('abc', 'bcd'), ('abc', 'zza')] ==> [('abc', 'zza'), ('abc', 'bcd')]
  1. Write a function that will receive a list of words as parameter and will return a list of lists of words, grouped by rhyme. Two words rhyme if both of them end with the same 2 letters. Example: group_by_rhyme(['ana', 'banana', 'carte', 'arme', 'parte']) will return [['ana', 'banana'], ['carte', 'parte'], ['arme']]

Lab 4

  1. Write a function that receives as parameters two lists a and b and returns a list of sets containing: (a intersected with b, a reunited with b, a - b, b - a)

  2. Write a function that receives a string as a parameter and returns a dictionary in which the keys are the characters in the character string and the values are the number of occurrences of that character in the given text. Example: For string "Ana has apples." given as a parameter the function will return the dictionary:

{'a': 3, 's': 2, '.': 1, 'e': 1, 'h': 1, 'l': 1, 'p': 2, ' ': 2, 'A': 1, 'n': 1} .
  1. Compare two dictionaries without using the operator "==" returning True or False. (Attention, dictionaries must be recursively covered because they can contain other containers, such as dictionaries, lists, sets, etc.)

  2. The build_xml_element function receives the following parameters: tag, content, and key-value elements given as name-parameters. Build and return a string that represents the corresponding XML element. Example: build_xml_element ("a", "Hello there", href =" http://python.org ", _class =" my-link ", id= " someid ") returns the string = "<a href="http://python.org "_class = " my-link " id = " someid "> Hello there </a>"

  3. The validate_dict function that receives as a parameter a set of tuples ( that represents validation rules for a dictionary that has strings as keys and values) and a dictionary. A rule is defined as follows: (key, "prefix", "middle", "suffix"). A value is considered valid if it starts with "prefix", "middle" is inside the value (not at the beginning or end) and ends with "suffix". The function will return True if the given dictionary matches all the rules, False otherwise. Example: the rules s={("key1", "", "inside", ""), ("key2", "start", "middle", "winter")} and d= {"key1": "come inside, it's too cold out", "key3": "this is not valid"} => False because although the rules are respected for "key1" and "key2" "key3" that does not appear in the rules.

  4. Write a function that receives as a parameter a list and returns a tuple (a, b), a representing the number of unique elements in the list, and b representing the number of duplicate elements in the list (use sets to achieve this objective).

  5. Write a function that receives a variable number of sets and returns a dictionary with the following operations from all sets two by two: reunion, intersection, a-b, b-a. The key will have the following form: "a op b", where a and b are two sets, and op is the applied operator: |, &, -. Ex:

{1,2}, {2, 3} =>
{
    "{1, 2} | {2, 3}":  {1, 2, 3},
    "{1, 2} & {2, 3}":  { 2 },
    "{1, 2} - {2, 3}":  { 1 },
    ...
}
  1. Write a function that receives a single dict parameter named mapping. This dictionary always contains a string key "start". Starting with the value of this key you must obtain a list of objects by iterating over mapping in the following way: the value of the current key is the key for the next value, until you find a loop (a key that was visited before). The function must return the list of objects obtained as previously described. Ex:
loop({'start': 'a', 'b': 'a', 'a': '6', '6': 'z', 'x': '2', 'z': '2', '2': '2', 'y': 'start'}) will return ['a', '6', 'z', '2']
  1. Write a function that receives a variable number of positional arguments and a variable number of keyword arguments adn will return the number of positional arguments whose values can be found among keyword arguments values. Ex:
my_function(1, 2, 3, 4, x=1, y=2, z=3, w=5) will return returna 3

Lab 5

  1. Write a Python class that simulates a Stack. The class should implement methods like push, pop, peek (the last two methods should return None if no element is present in the stack).

  2. Write a Python class that simulates a Queue. The class should implement methods like push, pop, peek (the last two methods should return None if no element is present in the queue).

  3. Write a Python class that simulates a matrix of size NxM, with N and M provided at initialization. The class should provide methods to access elements (get and set methods) and some mathematical functions such as transpose, matrix multiplication and a method that allows iterating through all elements from a matrix an apply a transformation over them (via a lambda function).

Lab 6

  1. Create a class hierarchy for shapes, starting with a base class Shape. Then, create subclasses like Circle, Rectangle, and Triangle. Implement methods to calculate area and perimeter for each shape.

  2. Design a bank account system with a base class Account and subclasses SavingsAccount and CheckingAccount. Implement methods for deposit, withdrawal, and interest calculation.

  3. Create a base class Vehicle with attributes like make, model, and year, and then create subclasses for specific types of vehicles like Car, Motorcycle, and Truck. Add methods to calculate mileage or towing capacity based on the vehicle type.

  4. Build an employee hierarchy with a base class Employee. Create subclasses for different types of employees like Manager, Engineer, and Salesperson. Each subclass should have attributes like salary and methods related to their roles.

  5. Create a class hierarchy for animals, starting with a base class Animal. Then, create subclasses like Mammal, Bird, and Fish. Add properties and methods to represent characteristics unique to each animal group.

  6. Design a library catalog system with a base class LibraryItem and subclasses for different types of items like Book, DVD, and Magazine. Include methods to check out, return, and display information about each item.

Lab 7

  1. Create a Python script that does the following:
  • Takes a directory path and a file extension as command line arguments (use sys.argv).
  • Searches for all files with the given extension in the specified directory (use os module).
  • For each file found, read its contents and print them.
  • Implement exception handling for invalid directory paths, incorrect file extensions, and file access errors.
  1. Write a script using the os module that renames all files in a specified directory to have a sequential number prefix. For example, file1.txt, file2.txt, etc. Include error handling for cases like the directory not existing or files that can't be renamed.

  2. Create a Python script that calculates the total size of all files in a directory provided as a command line argument. The script should:

  • Use the sys module to read the directory path from the command line.
  • Utilize the os module to iterate through all the files in the given directory and its subdirectories.
  • Sum up the sizes of all files and display the total size in bytes.
  • Implement exception handling for cases like the directory not existing, permission errors, or other file access issues.
  1. Write a Python script that counts the number of files with each extension in a given directory. The script should:
  • Accept a directory path as a command line argument (using sys.argv).
  • Use the os module to list all files in the directory.
  • Count the number of files for each extension (e.g., .txt, .py, .jpg) and print out the counts.
  • Include error handling for scenarios such as the directory not being found, no read permissions, or the directory being empty.

Project repartition

Numar matricolproiect Aproiect Bproietc C
310910401RSL221107A: 3B: 7C:12
310910401ESL221031A:15B:18C:12
310910401RSL221069A:15B:26C:12
310910401RSL221117A:12B: 3C:12
310910401RSL221041A: 2B:14C:12
310910401RSL221224A:30B:14C: 4
310910401RSL221085A:18B:21C: 7
310910401RSL221086A:30B:17C:11
310910401ESL221073A: 7B:36C: 8
310910401RSL221175A:24B:27C:20
310910401RSL221189A: 7B:12C:20
310910401RSL221156A: 9B:21C:22
310910401RSL221075A:14B: 8C: 5
310910401RSL221226A:18B:14C:20
310910401RSL221084A:18B:15C:21
310910401ESL221070A: 2B:27C:17
310910401RSL211178A: 5B:37C:19
310910401RSL221202A:27B: 6C: 5
310910401ESL221001A:15B:24C:18
310910401ESL221008A:18B: 5C: 3
310910401RSL221090A:19B: 6C: 9
310910401RSL221045A:28B:27C:17
310910401ESL221050A:18B:36C: 4
310910401RSL221196A:15B:28C:19
310910401RSL191137A: 7B: 2C: 1
310910401RSL221215A:19B:15C:14
310910401ESL221048A:15B:35C: 4
310910401RSL221232A:28B: 3C:10
310910401ESL221017A: 3B:36C: 9
310910401RSL221188A:16B:38C:19
310910401RSL221060A:22B:36C:23
310910401RSL221141A: 5B:11C:22
310910401RSL191194A: 3B:11C: 5
310910401ESL221054A: 2B:18C: 9
310910401ESL221029A:16B: 1C: 3
310910401RSL221092A: 7B:15C: 9
310910401ESL221060A:26B:20C:19
310910401RSL221087A:22B:31C: 1
310910401RSL211154A: 3B:29C: 4
310910401RSL211042A: 1B: 9C: 5
310910401ESL201032A:13B:10C:14
310910401RSL221166A:29B:23C: 4
310910401RSL221037A:21B:18C:24
310910401RSL221055A: 3B:10C:20
310910401ESL221046A: 5B:27C:21
310910401RSL221234A:28B:22C:19
310910401RSL221078A:30B:30C:23
310910401RSL221201A:27B:20C:20
310910401RSL211253A: 3B:29C:20
310910401RSL221067A:24B:11C: 8
310910401RSL221145A:19B:20C:19
310910401RSL221170A:19B:35C:20
310910401RSL211149A: 1B: 6C: 2
310910401RSL211121A:24B: 5C:20
310910401ESL221036A: 1B:30C:19
310910401RSL221199A:10B:19C: 7
310910401RSL221136A:24B:19C:19
310910401RSL221147A:20B:35C: 3
310910401ESL191013A: 1B: 1C:11
310910401RSL221003A:25B:22C: 7
310910401RSL221066A:11B:22C:11
310910401RSL221139A:24B:23C:17
310910401ESL221025A: 7B:35C:19
310910401ESL211062A:15B:19C:12
310910401RSL221207A:14B:14C: 6
310910401RSL221183A:16B:24C:17
310910401ESL221067A: 3B:36C: 7
310910401RSL221103A:19B:13C: 9
310910401RSL221094A:20B:31C: 9
310910401ESL221045A:29B:30C: 3
310910401RSL221133A:12B:23C:18
310910401RSL221230A:30B:24C:17
310910401RSL221007A:30B: 4C: 7
310910401RSL221212A:11B:22C: 7
310910401RSL221040A: 1B:13C:23
310910401ESL211039A:11B:14C: 2
310910401RSL221162A:25B:25C: 6
310910401RSL221116A: 9B:25C:17
310910401RSL221214A:11B:17C:20
310910401RSL221072A:30B:38C:17
310910401ESL221058A:21B:22C:17
310910401RSL221018A:21B: 6C: 9
310910401RSL221015A: 4B: 1C: 8
310910401RSL221029A:11B:23C:17
310910401ESL221041A:10B:32C: 7
310910401RSL221065A:21B: 8C:17
310910401ESL221040A:30B:27C:11
310910401RSL221016A:28B: 4C:20
310910401ESL221016A: 7B: 3C: 6
310910401RSL211190A:14B:26C: 5
310910401RSL221168A:17B:13C:18
310910401ESL241084MA:25B:26C: 2
310910401RSL221161A:29B:23C:13
310910401RSL221213A:13B:13C: 4
310910401RSL221012A: 8B:20C: 6
310910401RSL211290A: 9B:13C:21
310910401RSL221057A:14B:32C: 8
310910401RSL221049A:27B:36C: 4
310910401RSL221054A:29B:29C:18
310910401RSL221164A:12B:13C:23
310910401RSL221098A:11B:20C: 2
310910401RSL221081A:15B: 2C: 2
310910401RSL221119A:29B:15C:23
310910401ESL221021A:29B:21C: 1
310910401ESL221071A:23B:10C:23
310910401RSL221051A:17B:30C:18
310910401RSL221004A: 2B: 9C: 9
310910401ESL221064A:24B: 6C: 2
78006179TA:11B: 8C:16
310910401ESL241085MA:12B:18C: 1
310910401RSL221123A: 8B:30C:18
310910401RSL221233A:19B: 5C: 6
310910401RSL221071A: 6B:11C:18
310910401ESL221043A:16B:29C:20
310910401ESL221063A: 8B:21C: 9
310910401RSL221122A: 8B:17C: 6
310910401RSL221100A: 7B: 4C: 1
310910401RSL221225A:23B:32C:18
310910401RSL221154A:10B:38C:10
310910401ESL221019A:30B: 5C:17
310910401RSL221095A: 5B: 2C:13
310910401ESL221012A:23B:37C:21
310910401ESL221015A: 5B:12C: 3
310910401RSL221205A:17B: 6C:21
310910401RSL221138A:11B: 8C:21
310910401RSL221113A:20B:21C:23
310910401RSL221143A:17B: 6C:12
310910401RSL221091A: 1B:31C:14
310910401RSL231236A: 6B:19C:10
310910401RSL221027A:14B:29C: 1
310910401RSL221172A: 4B: 4C: 6
310910401RSL221174A: 7B: 5C: 5
310910401RSL221101A:22B:38C:23
310910401RSL221059A:10B:39C:21
310910401RSL221076A:15B:28C: 8
310910401RSL221176A:12B:30C:21
310910401RSL221211A:16B:19C: 3
310910401RSL221061A:28B:17C: 3
310910401RSL221035A: 4B:31C:24
310910401RSL221127A:26B:23C:25
310910401RSL221001A:26B:23C:22
310910401RSL201044A:18B:20C: 9
310910401RSL221150A:17B:37C:23
310910401RSL221185A:18B:22C:21
310910401RSL221120A: 9B:13C:22
310910401ESL221020A:19B:29C:11
310910401ESL221072A:22B:39C:24
310910401RSL221218A:26B: 5C: 6
310910401RSL221165A:27B:13C: 5
310910401RSL221024A:25B:39C:10
310910401RSL221169A:22B:11C:24
310910401RSL221128A:27B:20C: 8
310910401RSL221002A:26B:37C:14
310910401RSL221038A:25B:37C:25
310910401ESL221039A:20B:17C:25
310910401RSL221135A:26B:39C:24
310910401RSL221151A:22B:10C:24
310910401RSL231239A:16B:24C:21
310910401RSL201227A: 3B:39C: 1
310910401RSL221070A:22B:39C: 9
310910401RSL221106A: 4B:39C:25
310910401RSL221093A:21B:28C:24
310910401ESL221004A:22B:21C:11
310910401RSL221131A:12B:32C: 1
310910401RSL221125A:29B: 4C:12
310910401ESL221007A: 4B: 7C: 1
310910401RSL221210A: 2B: 4C:22
310910401RSL221053A: 8B:18C:22
310910401ESL211008A: 7B:39C:22
310910401RSL221221A:19B: 7C: 5
310910401RSL221097A:16B:24C:12
310910401RSL221042A: 8B:15C: 9
310910401RSL221121A:29B:37C:10
310910401RSL221019A: 8B:25C:25
310910401RSL221198A:15B:25C:22
310910401RSL221026A: 9B:38C:25
310910401RSL221157A:19B: 7C:18
310910401RSL221039A: 4B:32C: 8
310910401RSL221216A: 1B: 4C: 8
310910401RSL221028A: 1B:25C: 2
310910401RSL221056A:20B: 9C:15
310910401ESL221062A:16B:27C: 8
310910401ESL211042A: 6B: 8C: 7
310910401RSL221129A:26B: 9C:15
310910401RSL221231A:27B: 1C:25
310910401RSL221159A:10B:10C:25
310910401RSL221096A:21B:35C:10
310910401RSL221178A:29B: 3C:15
310910401RSL221194A: 1B: 1C:10
5040130226760A:21B:10C:10
310910401ESL221052A:25B:27C:11
310910401ESL221011A:20B:18C: 4
310910401RSL221062A:25B:37C:10
310910401RSL221010A:28B: 7C:24
310910401RSL221083A:30B:11C:22
310910401RSL221099A:12B:29C:14
310910401RSL221190A:21B:36C: 3
310910401ESL221055A: 5B:32C:11
310910401RSL221073A:10B:15C:17
310910401RSL221204A:14B:14C:22
310910401RSL211283A: 6B:12C:12
310910401RSL221182A:27B:25C:15
310910401RSL221020A:23B: 2C:18
310910401RSL221186A:23B: 2C: 7
310910401RSL221064A:18B:12C:16
310910401RSL221031A:20B:34C:15
310910401RSL211026A:23B:33C:21
310910401RSL221126A: 3B:34C:14
310910401RSL221195A:14B:12C:19
310910401RSL211080A: 3B:12C:10
310910401RSL221206A:16B:25C:13
310910401RSL221082A:11B: 8C:20
310910401RSL221063A: 4B:15C: 5
310910401ESL221037A:27B:10C:11
310910401RSL221177A:26B:10C:13
310910401RSL221033A: 6B: 9C: 3
310910401RSL221021A:18B: 1C:11
310910401RSL221132A:24B:24C: 7
310910401RSL221043A: 9B:15C: 6
310910401RSL221193A: 5B:14C: 4
310910401RSL221009A:17B:31C:10
310910401RSL221228A:14B:30C: 4
310910401ESL221061A:20B: 5C:13
310910401RSL221208A: 9B: 3C:15
310910401RSL221222A:21B:32C:11
310910401ESL221033A:17B:20C:13
310910401RLS221179A:24B: 6C:25
310910401RSL221130A:25B:31C:22
310910401RSL211160A:28B: 4C:23
310910401RSL221013A:20B:17C: 6
310910401ESL221003A: 8B: 2C: 2
310910401RSL221011A:15B:25C:12
310910401ESL201014A:14B:14C: 2
310910401ESL221026A:12B:38C: 5
310910401RSL221044A: 2B:22C:10
310910401RSL221142A:23B:37C:25
310910401RSL221217A: 6B:26C:13
310910401ESL221032A:26B: 2C: 8
310910401RSL221148A: 9B: 9C: 5
310910401ESL221023A:25B:19C: 4
310910401RSL221034A: 5B:17C: 6
310910401ESL221065A: 4B:17C: 2
310910401ESL201031A:23B:34C:15
310910401ESL191057A:23B:11C:12
310910401RSL221089A:18B: 7C:14
310910401RSL221184A:24B:38C: 5
310910401RSL221068A:11B: 1C:15
310910401RSL221080A:25B:36C:16
310910401RSL221048A: 8B:34C:15
310910401RSL221115A: 8B:35C:16
310910401RSL221105A:24B:22C:15
310910401RSL221050A: 9B:35C:24
310910401ESL221044A:28B:34C:14
310910401RSL221187A:30B:34C:16
310910401ESL221042A:10B:28C:18
310910401ESL221005A:10B: 8C:19
310910401ESL211044A:17B:31C:11
310910401RSL221171A:17B: 5C: 3
310910401RSL221118A:14B:12C:14
310910401RSL221109A: 4B: 3C: 1
310910401RSL211020A: 6B:19C:16
310910401ESL221056A: 5B:34C: 1
310910401RSL221146A: 2B:29C: 8
310910401RSL221017A:22B:34C:16
310910401RSL221134A:12B:27C:21
310910401RSL221219A: 6B:16C:16
310910401RSL221137A: 6B:23C:18
310910401RSL221181A: 2B:18C: 2
310910401ESL221059A: 2B:18C: 8
310910401RSL221149A:20B: 7C:24
310910401RSL221153A:28B:38C:24
310910401RSL221180A: 2B: 8C: 4
310910401RSL241174A:13B:24C:23
310910401RSL221111A:26B:24C:13
310910401RSL221047A:13B:19C:15
310910401RSL221155A: 6B: 3C: 1
310910401RSL221144A:28B:16C:15
310910401RSL221022A:27B: 7C:19
310910401RSL221203A:19B:31C:16
310910401RSL221124A:27B:16C:24
310910401RSL221200A: 5B:16C:23
310910401RSL221079A: 1B:30C: 7
310910401RSL221167A:21B: 2C: 7
310910401RSL221110A:29B:16C:16
310910401RSL221030A:12B: 3C:16
310910401ESL221006A:13B:16C:22
310910401RSL221173A:16B:16C: 3
310910401RSL221192A: 9B: 9C: 6
310910401ESL211030A: 4B:16C:25
310910401RSL221104A:17B: 9C: 2
310910401RSL221023A: 7B: 1C:14
310910401ESL221057A:23B:28C:16
310910401RSL221152A:13B:12C: 3
310910401ESL221066A:13B:32C:25